Изменение цвета выбранного цвета ColorDrawable / цвет фона Tablayout программно - PullRequest
0 голосов
/ 03 января 2019

У меня рисуется tab_color_selector.xml, я использую его в TabLayout.

Я хочу изменить цвет выбранного состояния на onTabSelected.

tab_color_selector.xml

 <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/medicine_green"
        android:state_selected="true" />
    <item android:drawable="@color/base_gray" />
</selector>

Tablayout xml:

<android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/c_white"
        app:tabBackground="@drawable/tab_color_selector"
        app:tabIndicatorColor="@color/summary_blue"
        app:tabIndicatorHeight="5px"
        app:tabMode="fixed"
        app:tabSelectedTextColor="@color/c_white"
        app:tabTextAppearance="@android:style/TextAppearance.Widget.TabWidget"
        app:tabTextColor="@color/c_white" />

Здесь я хочу изменить ColorDrawable android: state_selected = "true" цвет программно.

  tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {


            switch (tab.getPosition()) {
                case 0:
                                            ((ColorDrawable)tabLayout.getBackground()).setColor(getResources().getColor(R.color.material_yellow400));

                    tabLayout.setSelectedTabIndicatorColor(getResources().getColor(R.color.color_17));
                    break;

                case 1:
                                            ((ColorDrawable)tabLayout.getBackground()).setColor(getResources().getColor(R.color.material_pink400));
                    tabLayout.setSelectedTabIndicatorColor(getResources().getColor(R.color.out_pat_green));
                    break;


            }
        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {

        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }
    });

Я попробовал оба setColor () и setColorFilter (), а также setBackground ()

1 Ответ

0 голосов
/ 03 января 2019

Создайте стиль и добавьте его в качестве тега в виджет TabLayout

...