Android.support.widget.TabLayout
を使用してタブビューを作成していますが、選択したタブのテキストの色をコードから(xmlやスタイリングではなく)変更したいです。これどうやってするの ?
デザインサポートライブラリを使用している場合、このコードをtab activityに追加します。
tabLayout.setSelectedTabIndicatorColor(Color.parseColor("#FF0000"));
tabLayout.setSelectedTabIndicatorHeight((int) (5 * getResources().getDisplayMetrics().density));
tabLayout.setTabTextColors(Color.parseColor("#727272"), Color.parseColor("#ffffff"));
これにより、タブアクティビティでタブテキストの色とタブインジケータの色が設定されます。
XMLを使用すると非常に簡単です。タブレイアウトに次の2つの属性を追加するだけです。
app:tabSelectedTextColor="@color/color_primary_text"
app:tabTextColor="@color/color_secondary_text"
したがって、コードは次のようになります。
<Android.support.design.widget.TabLayout
Android:id="@+id/tab_layout"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_alignParentBottom="true"
Android:layout_alignParentStart="true"
Android:layout_gravity="bottom"
Android:background="@color/button_background"
Android:fillViewport="true"
app:tabBackground="@drawable/fixed_bottom_button"
app:tabIndicatorColor="@color/color_primary_text"
app:tabMode="fixed"
app:tabSelectedTextColor="@color/color_primary_text"
app:tabTextColor="@color/color_secondary_text" />
次の回答をご覧ください
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
View view = tab.getCustomView();
RelativeLayout relativeLayout = (RelativeLayout) view.findViewById(R.id.layout_background);
relativeLayout.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.white));
TypefacedTextView selectedText = (TypefacedTextView) view.findViewById(R.id.txt_tab_name);
selectedText.setTextColor(ContextCompat.getColor(getActivity(), R.color.colorPrimary));
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
View view = tab.getCustomView();
RelativeLayout relativeLayout = (RelativeLayout) view.findViewById(R.id.layout_background);
relativeLayout.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.colorPrimary));
TypefacedTextView selectedText = (TypefacedTextView) view.findViewById(R.id.txt_tab_name);
selectedText.setTextColor(ContextCompat.getColor(getActivity(), R.color.white));
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
tabLayoutはTabLayoutクラスのオブジェクトです
私はこれが少し遅いかもしれないことを知っていますが、ここにもっと簡単なコードがあります:
tabLayout.setTabTextColors(getResources().getColor(R.color.blue_200), getResources().getColor(R.color.white));
最初の値はデフォルトのテキストの色、2番目の値は選択されたタブのテキストの色です。
tabLayout.setSelectedTabIndicatorColor(Color.parseColor("#FF0000"));
tabLayout.setSelectedTabIndicatorHeight((int) (5 * getResources().getDisplayMetrics().density));
tabLayout.setTabTextColors(Color.parseColor("#727272"), Color.parseColor("#ffffff"));