1. 程式人生 > >Android---Tablayout自定義Tab的背景和字型的顏色變化

Android---Tablayout自定義Tab的背景和字型的顏色變化

還是先上效果圖
這裡寫圖片描述

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" />

這只是寫我在實現效果圖中遇到的一些坑,希望幫到大家