在Tablayout中更改选定和取消选定状态下的图标

5

如果这个问题之前已经被问过了,我很抱歉。

我想在选项卡布局的标签中选择时更改图标。我该如何使用选择器实现这一点?

我的应用程序中有两个选项卡,在选定状态下图标应该更改。


可能是重复的问题:TabLayout选定的标签图标在启动时未被选定: - Akshay Bhat 'AB'
1
请尝试以下代码: tabLayout.getTabAt(0).setIcon(R.drawable.selector); - LvN
谢谢 @LvN,它正在工作。 - FaisalAhmed
我会将此作为答案添加,请接受。 - LvN
5个回答

6

1. 创建自定义选项卡选择器 - 您需要同时添加选中状态为 true 和 false。

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

2. 将自定义选项卡选择器图形添加为tabItem的图标

<android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/footer"
        app:tabIndicatorColor="@color/female_colour">

        <android.support.design.widget.TabItem
            android:id="@+id/tab_home"
            android:layout_width="@dimen/_25dp"
            android:layout_height="@dimen/_25dp"
            android:padding="@dimen/_4dp"
            android:icon="@drawable/tab_home"
            />
 </android.support.design.widget.TabLayout>

这段代码被测试过适用于 Android 7.1.1 版本。


5

请尝试这个

tabLayout.getTabAt(0).setIcon(R.drawable.selector);

3
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                tab.setIcon(selectedImageResources[tab.getPosition()]);
                getSupportActionBar().setTitle(pageTitles[tab.getPosition()]);
                viewPager.setCurrentItem(tab.getPosition());
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
                tab.setIcon(imageResources[tab.getPosition()]);
            }

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

            }
        });

2

为了制作选项卡的选择器和取消选择器,您可以使用以下方法:

1.创建自定义视图并进行填充:

private View getTabView(int imgDrawable) {
        View view = getLayoutInflater().inflate(R.layout.tab_view, null);
        ImageView imgTab = (ImageView) view.findViewById(R.id.imgTab);
        imgTab.setImageDrawable(getResources().getDrawable(imgDrawable));

        return view;
    }

2.创建可绘制选择器

tab_home_selector.xml

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

3. 在选项卡中插入:

tabDashboardLayout = (TabLayout) findViewById(R.id.tabDashboardLayout);        
        //Adding the tabs using addTab() method
        View tabView = getTabView(R.drawable.tab_home_selector);;
        tabDashboardLayout.addTab(tabDashboardLayout.newTab().setCustomView(tabView));

对于每个选项卡,您需要创建单独的可绘制选择器并添加到选项卡中。



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接