Android---Tablayout自定義Tab的背景和字型的顏色變化
阿新 • • 發佈:2019-02-15
還是先上效果圖
1. 在Android—Tablayout自定義tab寫了自定義tab的實現,但是我發現當我們用自定義tab的時候,發現tablayout下的字型顏色屬性不管用了,所以這時我們只能去自己實現自定義佈局的背景和textview的字型顏色變化。
<android.support.design.widget.TabLayout
android:id="@+id/comment_tab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:padding="-1dp"
app:tabIndicatorColor="@color/blue_title"
app:tabPaddingBottom="-1dp"
app:tabPaddingEnd="0dp"
app:tabPaddingStart="0dp"
app:tabPaddingTop="-1dp"
app:tabSelectedTextColor="@color/blue_title"
app:tabTextColor="@color/blue_title"
app1:tabGravity="fill"
app1:tabIndicatorHeight="0dp"
app1:tabMode="fixed" />
2.自定義tab的佈局是這樣子的。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width ="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/tab_left_selector"
android:orientation="vertical" >
<TextView
android:id="@+id/tab_text_left"
android:layout_width="80dp"
android:layout_height="30dp"
android:enabled="false"
android:gravity="center"
android:textColor="@color/tab_text_color" />
</LinearLayout
3.其中tab_left_selector的程式碼是這樣子的(正常的空間的話只要在background中設定上tab_left_selector之後,那這個控制元件就可以實現背景變化了,但是在tablayout中你還得需要做一些改變)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/tab_right_unselect" android:state_selected="false"/>
<item android:drawable="@drawable/tab_right_select" android:state_selected="true"/>
</selector>
<3.1>在FragmentPagerAdapter中給他設定初始的狀態是select還是unselect(可以在activity中將true或fasle傳過來)
public View getTabView1(boolean select) {
mInflater = LayoutInflater.from(VossApplication.getAppContext());
View view = mInflater.inflate(R.layout.item_tab_right, null);
//
view.setSelected(select);
TextView tv = (TextView) view.findViewById(R.id.tab_text_right);
tv.setText(titles.get(1));
return view;
}
4.改變自定義tab佈局中textview的顏色
注意一:在res/color/tab_text_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="@color/white"/>
<item android:state_enabled="true" android:color="@color/white"/>
<item android:state_selected="true" android:color="@color/white"/>
<item android:color="@color/blue_title"></item>
</selector>
注意二:在自定義佈局中需要設定他的ebabled初始值false(上面3.1中有完整程式碼)
<TextView
android:id="@+id/tab_text_left"
android:layout_width="80dp"
android:layout_height="30dp"
android:enabled="false"
android:gravity="center"
android:textColor="@color/tab_text_color" />
這只是寫我在實現效果圖中遇到的一些坑,希望幫到大家