как показать цвет фона tablayout в Android (каждая вкладка должна быть разного цвета при нажатии на вкладку) - PullRequest
0 голосов
/ 23 января 2019
  1. Поскольку приведенный ниже код указывает на три вкладки,
  2. Я хочу изменить цвет вкладки, когда перкулярный щелчок вкладки
  3. Я попробовал все настройки цвета фона, а также я следую за всем ответом,но это бесполезно
  4. , пожалуйста, дайте мне какое-нибудь решение для этого.я хочу показать, что цвет вкладки должен быть другим при нажатии вкладки

tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
      @Override
      public void onTabSelected(TabLayout.Tab tab) {
        if (tab.getPosition() == 0) {
          tabLayout.setSelectedTabIndicatorColor(Color.parseColor("#FFFFFF")); // setting colour but its not working 

          recyclerView.setBackgroundResource(R.drawable.bghomeback);
          titleText.setVisibility(View.GONE);
          titleText1.setVisibility(View.VISIBLE);

        
          ContentfulAdapter.getInstance().filter("");
          mSearchView.setVisibility(View.GONE);
          mSearchImage.setVisibility(View.GONE);
          mSearchText.setVisibility(View.GONE);
          mFavText.setVisibility(View.INVISIBLE);
          swipeRefresh.setOnRefreshListener(storyFragment::requestSync);
          swipeRefresh.setEnabled(true);
        } else if (tab.getPosition() == 1) {
          titleText.setVisibility(View.VISIBLE);
          titleText1.setVisibility(View.GONE);
         
         // mRelative.setBackgroundResource(Color.parseColor("#000000"));
          tabLayout.setSelectedTabIndicatorColor(Color.parseColor("#FFFFFF"));



          recyclerView.setBackgroundResource(R.drawable.seraback);
          ContentfulAdapter.getInstance().filter("");
          mSearchView.setVisibility(View.VISIBLE);

          mFavText.setVisibility(View.GONE);
          mSearchView.setQuery("", false);
          swipeRefresh.setRefreshing(false);
          swipeRefresh.setEnabled(false);
        } else if (tab.getPosition() == 2){
         
          recyclerView.setBackgroundResource(R.drawable.favback);
          tabLayout.setSelectedTabIndicatorColor(R.drawable.taitemselect1);
          titleText.setVisibility(View.VISIBLE);
          titleText1.setVisibility(View.GONE);
          //  mSearchImage.setVisibility(View.GONE);
          mSearchText.setVisibility(View.GONE);
          mSearchView.setVisibility(View.GONE);
//          ContentfulAdapter.getInstance().filter("");
//          swipeRefresh.setOnRefreshListener(storyFragment::requestSync);

          mFavText.setVisibility(View.VISIBLE);
          mFavText.setText("The books you mark as favourite will appear in this page.\n No favourite book added.");
          ContentfulAdapter.getInstance().showFavoriteItem();
          if (ContentfulAdapter.getInstance().getItemCount() < 1) {
            mFavText.setVisibility(View.VISIBLE);
            mFavText.setText("The books you mark as favourite will appear in this page.\n No favourite book added.");
          } else {
            mFavText.setVisibility(View.INVISIBLE);

          }

          swipeRefresh.setRefreshing(false);
          swipeRefresh.setEnabled(false);
        }

1 Ответ

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

ВЫПУСКА

Причина, по которой этот код не работает, состоит в том, что на самом деле вы не меняете фон вкладки, а цвет индикатора выбранной вкладки

РЕШЕНИЕ

Поскольку я не уверен, чего вы пытаетесь достичь, я дам вам некоторую полезную информацию о TabLayout.

Метод TabLayout.getTabCount() возвращает количество вкладок в макете;

метод TabLayout.getTabAt() возвращает объект типа TabLayout.Tab, представляющий вкладку.

С помощью этих двух методов вы можете перебирать все вкладки и использовать метод TabLayout.Tab.setCustomView(int) или TabLayout.Tab.setCustomView(View), чтобы использовать настраиваемое представление для этой вкладки, как объяснено здесь в ответе MarcGV.

Если вы хотите более динамичное решение, вы можете использовать TabLayout.getSelectedTabPosition(), чтобы получить индекс выбранной вкладки и получить объект Tab с помощью метода, упомянутого ранее.

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

for (int i = 0; i < tabLayout.getTabCount(); i++) {
   TabLayout.Tab tab = tabLayout.getTabAt(i);
   tab.getCustomView().setBackgroundColor(Color.parseColor(getRandomColor()));
}

Я предполагаю, что метод getRandomColor() выбирает одно значение от 000000 до FFFFFF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...