2017-01-21 3 views
0

В моем приложении реализовано tablayout с каждой вкладкой, имеющей иконы и текст. Когда выбрана вкладка, на одной и той же вкладке должны быть выбраны значок и текст и не выбранная вкладка с разным цветным текстом и значками.Android TabLayout с текстом и значками Изменение цвета текста и значка на выбранной вкладке

ниже мой код для реализации макетов табуляции, но не позволяет изменять цвет текста и цвет значков при выборе вкладки.

private void setupTabIcons() { 

    TextView tabOne = (TextView) LayoutInflater.from(mContext).inflate(R.layout.custome_tab_with_icon, null); 
    tabOne.setText("Home"); 
    tabOne.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.selector_home, 0, 0); 
    tabLayout.getTabAt(0).setCustomView(tabOne); 

    TextView tabTwo = (TextView) LayoutInflater.from(mContext).inflate(R.layout.custome_tab_with_icon, null); 
    tabTwo.setText("Search"); 
    tabTwo.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.selector_search, 0, 0); 
    tabLayout.getTabAt(1).setCustomView(tabTwo); 

    TextView tabThree = (TextView) LayoutInflater.from(mContext).inflate(R.layout.custome_tab_with_icon, null); 
    tabThree.setText("WishList"); 
    tabThree.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.selector_wishlist, 0, 0); 
    tabLayout.getTabAt(2).setCustomView(tabThree); 

    TextView tabFour = (TextView) LayoutInflater.from(mContext).inflate(R.layout.custome_tab_with_icon, null); 
    tabFour.setText("Cart"); 
    tabFour.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.selector_cart, 0, 0); 
    tabLayout.getTabAt(3).setCustomView(tabFour); 

    TextView tabFive = (TextView) LayoutInflater.from(mContext).inflate(R.layout.custome_tab_with_icon, null); 
    tabFive.setText("Account"); 
    tabFive.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.selector_accounts, 0, 0); 
    tabLayout.getTabAt(4).setCustomView(tabFive); 

} 

Пожалуйста, помогите изменить цвет и значок текста при выборе вкладки.

ТИА

ответ

0

Вы можете сделать это, добавив TabLayout.OnTabSelectedListener и у него есть три метода onTabSelected(), onTabUnselected() и onTabReselected(), которые вы можете использовать, чтобы изменить цвет как значок и текст. Вот link, на который вы можете ссылаться.

0

Вы можете использовать Color State List resource для цвета текста, а также для оттенков значков. Думаю, android:state_selected должен работать.

0

цвет текста вкладки Переключить В вашей XML добавить строки app:tabTextColor и app:tabSelectedTextColor к TabLayout.

 <android.support.design.widget.TabLayout 
      android:layout_width="match_parent" 
      app:tabTextColor="#000000" 
      app:tabSelectedTextColor="#FFFFFF" 
      android:layout_height="wrap_content"/> 

вкладку Переключить значок В вашей fargment/активности селекторного добавить Drawable на каждой вкладке.

 tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
     //Set selector drawable to each tab 
     tabLayout.addTab(tabLayout.newTab().setText("Warm Up").setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.selector_warmup_icon,null))); 
     tabLayout.addTab(tabLayout.newTab().setText("Exercise").setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.selector_exercise_icon, null))); 
     tabLayout.addTab(tabLayout.newTab().setText("Rest").setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.selector_rest_icon, null))); 
     tabLayout.addTab(tabLayout.newTab().setText("Success").setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.selector_success_icon, null))); 

selector_warmup_icon.xml (должно быть, как)

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:drawable="@drawable/ic_human_white_48dp" android:state_selected="true"/> 
    <item android:drawable="@drawable/ic_human_grey600_24dp" android:state_selected="false"/> 

</selector> 
+0

Ничто не дисплей tablayout. после применения над панелью ввода кода пробела нет значка без текста. – Ravi

+0

Вышеприведенный код работает для меня –

+0

Используйте .setText («Название вкладки»), чтобы указать имя вкладки. Проверьте обновленный код, теперь текст будет отображаться до значков. Проверьте файл селектора правильно. –