Ceci est mon code dans l'activité principale
public class FilterActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_filter);
// Get the ViewPager and set it's PagerAdapter so that it can display items
ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
PageAdapter pageAdapter = new PageAdapter(getSupportFragmentManager(), FilterActivity.this);
viewPager.setAdapter(pageAdapter);
// Give the TabLayout the ViewPager
final TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs);
tabLayout.setupWithViewPager(viewPager);
}
}
Et c'est mon code dans le XML
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:id="@+id/app_bar"
layout="@layout/app_bar">
</include>
<android.support.design.widget.TabLayout
android:id="@+id/sliding_tabs"
android:layout_width="fill_parent"
style="@style/MyCustomTabLayout"
android:layout_height="48dp"/>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1"
android:background="@android:color/white" />
</LinearLayout>
Je souhaite modifier la couleur d'arrière-plan d'un onglet lorsqu'il est sélectionné
android
android-tabs
android-tablayout
Joël Lara
la source
la source
tabLayout.setBackgroundColor(colorInt)
. Si vous en avez besoin pour chaque onglet, vous pouvez extraire les enfants de votre TabLayoutVous pouvez essayer ceci:
Dans votre fichier xml d'arrière-plan:
la source
Ajouter un attribut dans xml:
Et créez dans le dossier dessinable, tab_color_selector.xml
la source
Avez-vous essayé de vérifier le API ?
Vous devrez créer un écouteur pour l'
OnTabSelectedListener
événement, puis lorsqu'un utilisateur sélectionne un onglet, vous devez vérifier s'il est le bon, puis changer la couleur d'arrière-plan en utilisanttabLayout.setBackgroundColor(int color)
, ou si ce n'est pas le bon onglet, assurez-vous de revenir au couleur normale à nouveau avec la même méthode.la source
android:background=FF0000
Vous pouvez l'avoir dans le xml.
la source
Comme j'ai trouvé l'option la meilleure et la plus appropriée pour moi et cela fonctionnera également avec l'animation.
Vous pouvez utiliser
indicator
comme arrière-plan.Vous pouvez définir
app:tabIndicatorGravity="stretch"
attribut à utiliser comme arrière-plan.Exemple:
J'espère que cela vous aidera.
la source
app:tabIndicatorColor
@MindRoasterMirVous pouvez changer la couleur d'arrière-plan ou d'ondulation de chaque onglet comme ceci:
la source
Après quelques déconner, c'est ainsi que j'ai obtenu le look souhaité (au moins dans l'émulateur) et cela conserve l'effet d'entraînement.
Et le
@drawable/tab_selector
:FYI: C'est ce que l'émulateur a montré avant d'ajouter l'
color
argument à@drawable/tab_selector
:la source
Vous pouvez changer la couleur d'arrière-plan de l'onglet par cet attribut
la source
L'un des moyens que j'ai pu trouver consiste à utiliser l'indicateur d'onglet comme celui-ci:
L'astuce consiste à:
Cela prend également en charge l'animation fluide lors du changement d'onglet
la source
Une des solutions les plus simples consiste à changer colorPrimary à partir du fichier colors.xml.
la source