我正嘗試創建自定義標籤佈局,因爲我需要在TextView
旁邊設置徽章計數器。我已將id設置爲@android:id/text1
,因爲它在文檔中提到過。TabLayout中選定的自定義標籤文本顏色
當我的自定義選項卡被選中時,TextView顏色不會自動更改。如何以正確和清潔的方式實現它?
正確選擇默認選項卡:
錯誤選擇的自定義選項卡(文字是灰色的,但應該是白色的):
代碼
PagerAdapter adapter = new MyAdapter(getSupportFragmentManager());
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
TabLayout.Tab tab = tabLayout.getTabAt(2);
if (tab != null) {
tab.setCustomView(R.layout.tab_proposed_rewards);
}
佈局
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:id="@android:id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:gravity="center"
android:textAppearance="@style/TextAppearance.Design.Tab"/>
<TextView
android:id="@+id/indicator"
android:layout_width="24dp"
android:layout_height="24dp"
android:background="@drawable/background_indicator"
android:gravity="center"
android:lines="1"/>
</LinearLayout>
編輯
答:
tab.setCustomView(R.layout.tab_proposed_rewards);
ColorStateList textColor = tabLayout.getTabTextColors();
TextView textView = (TextView) tab.getCustomView().findViewById(android.R.id.text1);
textView.setTextColor(textColor);
答案在於[here](http://stackoverflow.com/questions/ 30909471/tablayout-android-design-library-text-color),第二個回答下來。使用您的styles.xml,以便您可以使用'style'標籤通過xml創建視圖,而不是以編程方式創建它。就我個人而言,我認爲這是實現它的「更乾淨」的方式。 –
@DillonBurton沒有用自定義選項卡布局,但感謝幫助無論如何。我發現不同的解決方案 –