繁体   English   中英

选中后更改Tab的customView

Change customView of Tab when selected

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

在此处输入图片说明 我想更改价格标签的图像。 第一次按下时,将按价格升序显示产品,再次按下同一选项卡时,将按价格降序显示产品。 我无法更改标签的图像以显示订单。 我将customView用于我的第三个标签,因为它包含与文本对齐的图像,

下面是我的代码:

price_tab.xml:

<?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:orientation="horizontal">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/price"
        android:textAllCaps="true"
        android:textColor="@android:color/black" />

    <ImageView
        android:id="@+id/icon"
        android:layout_width="24dp"
        android:layout_height="24dp"
        android:src="@drawable/lth" />

</LinearLayout>

ProductActivity.java

tablayout.addTab(tablayout.newTab().setText(getText(R.string.popular)), 0);
        tablayout.addTab(tablayout.newTab().setText(getText(R.string.new_tag)), 1);
        tablayout.addTab(tablayout.newTab().setText(getText(R.string.price)), 2);
        View mCustomView = LayoutInflater.from(ProductActivity.this).inflate(R.layout.price_tab, null);
        mImageViewCustom = (ImageView) mCustomView.findViewById(R.id.icon);
        tablayout.getTabAt(2).setCustomView(mCustomView);
        tablayout.addOnTabSelectedListener(new OnTabSelectedListener() {
            @Override
            public void onTabSelected(Tab tab) {

                if (tab.getText().equals(getString(R.string.new_tag))) {
                    sort = 0;
                    page = 1;
                    isLastPage = false;
                    productList.clear();
                    productListAdapter.notifyDataSetChanged();
                    getProducts();


                } else if (tab.getText().equals(getString(R.string.price))) {
                    if (sort != 2) {
                        sort = 2;

                        mImageViewCustom.setImageResource(R.drawable.lth);
                    } else {
                        sort = 3;
                        mImageViewCustom.setImageResource(R.drawable.htl);
                    }
                    page = 1;
                    isLastPage = false;
                    productList.clear();
                    productListAdapter.notifyDataSetChanged();
                    getProducts();

                } else if (tab.getText().equals(getString(R.string.popular))) {
                    sort = 1;


                    page = 1;
                    isLastPage = false;
                    productList.clear();
                    productListAdapter.notifyDataSetChanged();
                    getProducts();
                }

            }

            @Override
            public void onTabUnselected(Tab tab) {

            }

            @Override
            public void onTabReselected(Tab tab) {

                if (tab.getText().equals("Price")) {
                    if (sort == 2) {
                        sort = 3;
                    } else
                        sort = 2;
                    page = 1;
                    isLastPage = false;
                    productList.clear();
                    productListAdapter.notifyDataSetChanged();

                    getProducts();
                }
            }


        });

        getProducts();

在此处输入图片说明

3 个回复

在您的onTabReselcted() ,尝试以下代码:

@Override
        public void onTabReselected(TabLayout.Tab tab) {
            if (tab.getText().toString().equals("Price")) {
                if (sort == 2) {
                    sort = 3;
                } else
                    sort = 2;
                page = 1;
                isLastPage = false;
                productList.clear();
                productListAdapter.notifyDataSetChanged();

                //change tab icon
                View view = tab.getCustomView();
                if (view != null) {
                   ImageView icon = view.findViewById(R.id.icon);
                   icon.setImageResource(R.drawable.your_image_resource);
                }      

                getProducts();
            }
        }

根据您的sort逻辑,您可以将图标从增加更改为减少,反之亦然

通过使用此选项,您可以根据选项卡的当前位置自定义所需的任何选项卡。

private TabLayout tabs;
tabs = view.findViewById(R.id.tabs);

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


                    if (tab.getPosition()==your tab position){
                        tabs.setTabTextColors(Color.parseColor("#fdb827"), Color.parseColor("#ffffff"));
                        tabs.setSelectedTabIndicatorColor(Color.parseColor("#ffffff"));

                    }else {
                        tabs.setTabTextColors(Color.parseColor("#fdb827"), Color.parseColor("#F57F17"));
                        tabs.setSelectedTabIndicatorColor(Color.parseColor("#fdb827"));
                    }



                }

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

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

                }
            });

希望这可以帮助。

将tab.getText()更改为tab.getText()。toString()

4 选择选项卡时更改div高度

我有一个选项卡式内容,其中包含4个选项卡,每个选项卡中将有两个div组成边框设计。 我遇到的问题是,我不知道如何在选中div所在的选项卡时为div设置动画效果。 我有一个小提琴供参考 ,下面是标记。 HTML CSS JS 我希望第一个标签页的当前div高度保持 ...

2014-07-19 19:40:07 2 1023   html/ css3
6 未选中时如何动态更改选项卡标题?

我想在浏览器 (chrome) 中运行的 javascript 游戏的窗口选项卡中显示动态信息(分数):我的目标是在不同的选项卡中运行多个游戏实例,并行运行,并能够看到标签标题中的当前分数。 我试过 : document.title = 分数 ...但它仅适用于选定的选项卡,另一个选项卡在选择 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM