Android Designライブラリの新しいTabLayoutを使用しています。 tabLayout.setTabTextColors(colorstatelist)
を使用してtextcolor状態リストを設定できました
Styles.xmlを使用して同じことを実現するにはどうすればよいですか?
<Android.support.design.widget.TabLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
app:tabMode="fixed"
app:tabGravity="fill"
app:tabTextColor="@color/your_unselected_text_color"
app:tabSelectedTextColor="@color/your_selected_text_color"/>
さらに、さらにスタイルを設定するためのtabIndicatorColorやtabIndicatorHeightなどの属性があります。
tabLayout.setTabTextColors(
getResources().getColor(R.color.your_unselected_text_color),
getResources().getColor(R.color.your_selected_text_color)
);
この古い方法はAPI 23で廃止されるため、代替手段は次のとおりです。
tabLayout.setTabTextColors(
ContextCompat.getColor(context, R.color.your_unselected_text_color),
ContextCompat.getColor(context, R.color.your_selected_text_color)
);
以下は、テキストスタイルと選択したテキストの色をオーバーライドするスニペットコードです。
<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout">
<item name="tabTextAppearance">@style/MyCustomTabText</item>
<item name="tabSelectedTextColor">@color/tab_text_act</item>
</style>
<style name="MyCustomTabText" parent="TextAppearance.AppCompat.Button">
<item name="Android:textSize">14sp</item>
<item name="Android:textColor">@color/tab_text</item>
</style>
そして、これはレイアウトのスニペットコードです
<Android.support.design.widget.TabLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
style="@style/MyCustomTabLayout" />
上記の答えはすべて正しいですが、デフォルトのスタイルをオーバーライドし、変更したい特定の要素のみを変更する方が良いと思います。以下の例は、テキストを太字にします:
<style name="Widget.TabItem" parent="TextAppearance.Design.Tab">
<item name="Android:textStyle">bold</item>
</style>
それから..、
app:tabTextAppearance="@style/Widget.TabItem"
Android:textAppearance
スタイルをオーバーライドするだけです。 TabLayoutはtextAppearanceを使用するためです。スタイルの小さなスニペットコードを次に示します。
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Below will reference with our custom style -->
<item name="Android:textAppearance">@style/my_tab_text</item>
</style>
<style name="my_tab_text" parent="Base.TextAppearance.AppCompat">
<item name="Android:textColor">@Android:color/holo_blue_dark</item>
</style>
Appthemeから参照したくない場合 Belowスニペットを使用してTabLayoutに直接指定できます。
<Android.support.design.widget.TabLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
app:tabTextAppearance="@style/my_tab_text"
app:tabIndicatorHeight="48dp"/>
カスタムタブの場合、次をオーバーライドする必要があります。1)app:tabTextColor // for_unselected_text "
<Android.support.design.widget.TabLayout
Android:id="@+id/tabs"
style="@style/MyCustomTabLayout"
Android:layout_width="match_parent"
Android:layout_height="56dp"
Android:background="?attr/colorPrimary"
Android:scrollbarSize="24sp"
Android:visibility="gone"
app:tabTextColor="@color/white_40_percent"
app:tabMode="scrollable" />
2)tabSelectedTextColor //選択したタブの色用3)tabIndicatorColor //タブインジケーターの色
<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout">
<item name="Android:textColorPrimary">@color/white</item>
<item name="tabSelectedTextColor">@color/white</item>
<item name="tabTextAppearance">@style/TabTextStyle</item>
<item name="tabIndicatorColor">?attr/colorAccent</item>
<item name="tabIndicatorHeight">4dp</item>
<item name="Android:tabStripEnabled">true</item>
<item name="Android:padding">0dp</item>
</style>
<style name="TabTextStyle">
<item name="Android:fontFamily">@string/font_fontFamily_medium</item>
<item name="Android:textStyle">bold</item>
<item name="Android:textAllCaps">true</item>
<item name="Android:textColor">@color/tab_text_color</item>
<item name="Android:textSize">16sp</item>
</style>
tab_text_color.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:color="@color/white_40_percent"Android:state_selected="false"/>
<item Android:color="@color/white_100_percent"Android:state_selected="true"/>
</selector>
簡単で完璧な方法:
Xmlファイルで::
<Android.support.design.widget.TabLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
app:tabTextAppearance="@style/TabText"/>
値スタイルファイル:
注:「cairo_semibold」は外部フォントです。これをフォントに置き換えることができます。
<style name="TabText" parent="TextAppearance.Design.Tab">
<item name="Android:textColor">#1f57ff</item>
<item name="Android:textSize">14sp</item>
<item name="Android:fontFamily">@font/cairo_semibold</item>
</style>
最良または短くて簡単な方法は、カスタムアプリバーを作ることです
<?xml version="1.0" encoding="utf-8"?>
<Android.support.v7.widget.Toolbar xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="?android:attr/actionBarSize"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:background="@color/colorAccent"
app:theme="@style/myCustomAppBarTheme"
app:popupTheme="@style/ThemeOverlay.AppCompat.Dark"><RelativeLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<ImageButton
Android:id="@+id/btn_back"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentLeft="true"
Android:background="@Android:color/transparent"
Android:src="@mipmap/ic_launcher" />
<TextView
Android:id="@+id/txt_title"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerVertical="true"
Android:layout_marginLeft="16dp"
Android:layout_marginStart="16dp"
Android:layout_toEndOf="@+id/btn_back"
Android:layout_toRightOf="@+id/btn_back"
Android:text="Title"
Android:textColor="@Android:color/white"
Android:textSize="20sp"
Android:textStyle="bold" />
</RelativeLayout>
</Android.support.v7.widget.Toolbar>