Изменить пользовательский вид вкладки при выборе - PullRequest
0 голосов
/ 15 ноября 2018

enter image description here Я хочу изменить изображение вкладки Цена при выборе.При первом нажатии отображаются продукты в соответствии с ценой в порядке возрастания, при повторном нажатии той же вкладки отображаются продукты в соответствии с ценой в порядке убывания.Я не могу изменить изображение вкладки для отображения порядка.Я использую customView для своей 3-й вкладки, поскольку она содержит изображение, выровненное вправо к тексту,

Ниже приведен мой код:

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();

enter image description here

Ответы [ 3 ]

0 голосов
/ 15 ноября 2018

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

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) {

                }
            });

Надеюсь, это поможет.

0 голосов
/ 15 ноября 2018

В вашем 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 вы можете изменить значок с увеличения на уменьшение и наоборот

0 голосов
/ 15 ноября 2018

Измените tab.getText () на tab.getText (). ToString ()

...