63 votes

Couleur de la ligne inférieure de l'onglet actuel TabWidget

J'ai un TabWidget pour lequel j'ai activé et défini l'option stripLeft y stripRight ...

mTabHost.getTabWidget().setStripEnabled(true);
mTabHost.getTabWidget().setRightStripDrawable(R.drawable.redline);
mTabHost.getTabWidget().setLeftStripDrawable(R.drawable.redline);

Comme vous pouvez le voir dans l'image ci-dessous, cela ne change pas la couleur de la ligne inférieure de l'onglet actuellement sélectionné (TAB 2).

enter image description here

Comment puis-je changer la couleur de la ligne inférieure de l'onglet actuellement sélectionné, qui est par défaut bleue pour le moment ? (Je suppose que la couleur bleue est définie dans le fichier de configuration par défaut. AppTheme style dans styles.xml .)

J'ai regardé este réponse mais il ne dit pas comment changer la couleur...

5voto

dzikovskyy Points 2735

La couleur d'accentuation est utilisée par défaut comme couleur de l'onglet actif. Vous pouvez la définir/modifier dans style.xml fichier :

<style name="AppBaseTheme" parent="Theme.AppCompat.Light">

    <item name="colorAccent">@color/myAccentColor</item>

</style>

2voto

Ted_Liang Points 16

Ma façon de résoudre ce problème est d'utiliser setBackgroundResource. Tout d'abord, vous devez créer exactement le même fond d'écran.

ligne_label_1_pressed.xml

<item android:top="-6dp" android:left="-6dp" android:right="-6dp">
    <shape>
        <size android:height="50dp"/>
        <solid android:color="@android:color/transparent"/>
        <stroke android:color="@color/myColor" android:width="6dp"/>
    </shape>
</item>

line_label_1.xml

<item>
    <shape>
        <solid android:color="@android:color/transparent" />
    </shape>
</item>

et ensuite créer tab_selector.xml comme suit

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/line_label_1_pressed" android:state_selected="true"/>
<item android:drawable="@drawable/line_label_1"/>

puis setbackgroudResource en utilisant tab_selector.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/tab_selector"
android:gravity="center_horizontal|center_vertical" />

0voto

skajar Points 79

J'ai trouvé une autre solution, ouvrir styles.xml et changer une ligne :

res -> valeurs -> styles.xml

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@android:color/holo_orange_light</item> <!-- set the color in this line -->
    <item name="windowNoTitle">true</item>
</style>

-2voto

Nick Fedorov Points 39

Utilisez simplement quelque chose comme

tabHost.setSelectedTabIndicatorColor(Color.WHITE);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X