Вопрос по android, colors, tabs – Можно ли изменить цвет выбранной вкладки в андроиде?

7

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

Обновить

первая вкладка когда выбран красный цвет

вторая вкладка когда выбран синий цвет

Вот мой код

tabHost = (TabHost)findViewById(android.R.id.tabhost);
    TabSpec firstTabSpec = tabHost.newTabSpec("tid1");//these are color red
    TabSpec secondTabSpec = tabHost.newTabSpec("tid1");//these color blue
    firstTabSpec.setIndicator("Sales Info",getResources().getDrawable(R.drawable.sales));
    Intent photosIntent = new Intent(this, a.class);
    firstTabSpec.setContent(photosIntent);
    secondTabSpec.setIndicator("Service Info",getResources().getDrawable(R.drawable.services));
    Intent photosIntent1 = new Intent(this, b.class);
    secondTabSpec.setContent(photosIntent1);
    tabHost.addTab(firstTabSpec);
    tabHost.addTab(secondTabSpec);

Ваш Ответ

3   ответа
2

ка CharSequence, значок Drawable). Фоновая настройка представления, которое вы передадите (например, если вы надуваете XML родительский макет), должна быть ColorStateList для обработки кликов.

12

Попробуй это:

...onCreate(){

     ...
     tabHost.setOnTabChangedListener(new OnTabChangeListener() {

    @Override
    public void onTabChanged(String arg0) {

        setTabColor(tabHost);
    }
     });
     setTabColor(tabHost);
...
}

//Change The Backgournd Color of Tabs
public void setTabColor(TabHost tabhost) {

    for(int i=0;i<tabhost.getTabWidget().getChildCount();i++)
        tabhost.getTabWidget().getChildAt(i).setBackgroundColor(COLOR_CYAN); //unselected

    if(tabhost.getCurrentTab()==0)
           tabhost.getTabWidget().getChildAt(tabhost.getCurrentTab()).setBackgroundColor(COLOR_RED); //1st tab selected
    else
           tabhost.getTabWidget().getChildAt(tabhost.getCurrentTab()).setBackgroundColor(COLOR_BLUE); //2nd tab selected
}
Превосходно работает Mercy
@micro: пожалуйста, смотрите мой обновленный ответ. Hiral
Это должно работать, потому что Color.GREEN доступен напрямую. Затем вы можете использовать Color.parseColor ("# color_code_of_green"); Hiral
пожалуйста, обновите мой вопрос Mercy
Спасибо, что он работает, но я применяю цветовой код Color.green (0xCFEB5D) вместо (color.GREEN). Он не работает, почему? Mercy
7

Вы можете установитьListener для тебяTabHost с помощьюsetOnTabChangedListener и изменить его динамически,

  public void onCreate(Bundle savedInstanceState){
   // add your tabs here

   // set the First Tab as selected Tab.
  setSelectedTabColor();
}

Создайте метод, который установитSelected а такжеUnselected цветTab.

 private void setSelectedTabColor() {
        for(int i=0;i<tabHost.getTabWidget().getChildCount();i++)  
        {  
            tabHost.getTabWidget().getChildAt(i)
                                            .setBackgroundColor(Color.WHITE);  
        }  
        tabHost.getTabWidget().getChildAt(tabHost.getCurrentTab())
                                              .setBackgroundColor(Color.RED); 
    }

Тогда внутри вашегоonTabChanged() Вы можете динамически менять фон.

@Override  
    public void onTabChanged(String tabId) {  
        setSelectedTabColor(); 
    } 

Вы можете использовать то же самое дляselected а такжеunselected Tab,here это блог для того же.

Хорошая идея встать .... Как насчет невыбранных вкладок? Pankaj Kumar
@lalit, пожалуйста, обновите мой вопрос Mercy
Спасибо, Несоответствие типов: невозможно преобразовать из void в Просмотр. Ошибка при получении View view = myTabHost.getTabWidget (). GetChildAt (tab) .setBackgroundColor (Color.CYAN); эта линия Mercy
невыбранная вкладка также голубого цвета Mercy
@micro Я добавил ссылку для того же, как вы также можете управлять невыбранными вкладками. Lalit Poptani

Похожие вопросы