Настройка TabWidget в SDK 1.5, API 3

Я знаю, что API 3 не позволяет представлению быть установленным для вкладки, но я все еще должен изменить TextView, отображенный как индикатор. Я также хотел бы изменить Drawable для вкладки, но я не вижу способ сделать это без пользовательского представления вкладки, как позволено в 1,6, API 4.

При работе с этим универсальным примером ниже, там способ получить TextView и изменить его свойства или изменить drawable?

       TabHost tabHost = getTabHost();
       TabHost.TabSpec spec;

       spec = tabHost.newTabSpec("nearby")
                      .setIndicator("Nearby Activity")
                      .setContent(R.id.nearby_list);                
       tabHost.addTab(spec);        

       spec = tabHost.newTabSpec("friends")
                  .setIndicator("Friends & Favorites")
                      .setContent(R.id.friends_list);
       tabHost.addTab(spec);        

       tabHost.setCurrentTabByTag("nearby");

Спасибо за любую справку.

1
задан Dylan McClung 5 June 2010 в 16:08
поделиться

2 ответа

, чтобы изменить значок:

 .setIndicator("Friends & Favorites",getResources().getDrawable(R.drawable.myTabIcon))

, чтобы изменить TabBackground Drawable ::

tabHost.getTabWidget().getChildAt( index of tab ).setBackgroundResource(R.drawable.mytab_Newbackground);

, чтобы получить Textview, проверьте образец Франческо

ViewGroup v = (ViewGroup) tabHost.getTabWidget().getChildAt( index of tab );
TextView tv = (TextView)v.getChildAt(1); 
Log.d("Tab's text = ",tv.getText().toString());
1
ответ дан 3 September 2019 в 00:02
поделиться

Поскольку Tabwidget является обычной группой просмотра, я думаю, вам следует получить доступ к все его дети. Что-то вроде этого должно сработать:

   tabHost.setOnTabChangedListener(this);
....
...


@Override
    public void onTabChanged(String tabId) {

        int count = tabHost.getTabWidget().getChildCount();
        for (int i = 0; i < count; i++){
            ViewGroup v = (ViewGroup) tabHost.getTabWidget().getChildAt(i); //Should be a relative layout
            TextView tv = (TextView)v.getChildAt(1); //At position 0 should be the ImageView
            Log.d("onTabChanged",tv.getText().toString());
        }

    }

Возможно, вам придется поиграть с положением индексов, чтобы найти правильное представление.

1
ответ дан 3 September 2019 в 00:02
поделиться
Другие вопросы по тегам:

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