2010-12-22 62 views
27

我在我的應用程序中使用TabHost,我在我的應用程序中使用了四個選項卡,並且當特定選項卡被選中並未選中時,我想在TabHost中使用不同的圖像。我需要爲每個特定的選項卡使用不同的圖像。如何更改TabHost中的選項卡圖像

當我選擇任何選項卡時,圖像不明亮,當我切換到另一個選項卡時,明亮的圖像變成灰色陰影。

我已經實現了TabHost,但我不知道如何更改TabHost中的圖像。

任何人都可以幫助我。

感謝, 大衛

+1

@Suchismita答案被原始海報接受。這個賞金的目的是什麼? – Ronnie 2012-12-04 15:43:53

回答

44

如果您希望使用不同的圖像用於選定和未選定狀態,然後創建您的繪圖資源文件夾「選擇」 XML文件爲每個標籤,例如tab1_selector.xml,tab2_selector.xml應該包含以下內容,用於替換對選定和未選中狀態的圖像的可繪製引用。即

<?xml version="1.0" encoding="utf-8"?> 
<selector 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
    android:state_selected="true" 
    android:drawable="@drawable/tab1_selected_image" /> 
    <item 
    android:state_selected="false" 
    android:drawable="@drawable/tab2_unselected_image" /> 
</selector> 

然後使用.setIndicator方法巴拉斯上面寫道:你應該引用您的新的XML繪製資源。

10

設置文本&圖標,我們需要使用setIndicator財產。

tabSpec.setIndicator(Char,Drawable); 
firstTabSpec.setIndicator("First Tab Name", getResources().getDrawable(R.drawable.logo)); 
secondTabSpec.setIndicator("Second Tab Name",getResources().getDrawable(R.drawable.logo)); 

使用此功能來設置單獨的圖像爲每個標籤

+0

獲取更多信息http://www.androidpeople.com/android-tabhost-tutorial-part-2/ – bharath 2010-12-22 09:28:38

+0

我不想使用文本和圖標,我想更改所選表單和未選擇表單上的選項卡的圖像。 – 2010-12-22 10:32:09

2

this TabLayout教程中,選擇了一個Tab並且未選中時使用不同的圖像。

基本上你必須創建一個Statelist drawable。下面是來自開發者網站

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- When selected, use grey --> 
    <item android:drawable="@drawable/ic_tab_artists_grey" 
      android:state_selected="true" /> 
    <!-- When not selected, use white--> 
    <item android:drawable="@drawable/ic_tab_artists_white" /> 
</selector> 

而且setIndicator(CharSequence的,可繪製)被調用來設置標籤的文本和圖標相同的代碼。

16

首先你必須有兩個圖像,因爲你想從一個到另一個,所以你需要這兩個圖像,你必須把它放在三個可繪製的文件夾。

在我的例子我有圖片,一個叫icon1.pngicon2.png

之後,在可繪製文件夾內創建一個xml文件(所有可繪製文件夾的文件都是相同的)。這是文件:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<!-- When selected, use icon1 --> 
<item android:drawable="@drawable/icon1" 
     android:state_selected="true" /> 
<!-- When not selected, use icon2--> 
<item android:drawable="@drawable/icon2" /> 
</selector> 

您可以選擇當選擇標籤時將出現的圖像。在這種情況下,將出現圖標1,因爲我們在標籤上聲明瞭state_selected = true

所以,現在,你有兩個圖像和三個可繪製文件夾內的XML文件。好!

現在,在該類中聲明選項卡,爲要添加的每個選項卡添加此行。

tabHost.addTab(tabHost 
.newTabSpec("one") 
.setIndicator("The Tab", 
    res.getDrawable(R.drawable.yourxmlfile)) 
.setContent(new Intent(this, YourClass.class))); 

記住R.drawable.yourxmlfile correponds XML文件,你在繪製文件夾中創建。

就是這樣!希望這可以幫助你。

1

您可以使用的ImageButton這是更好,因爲一個ImageView的可以選擇,而不是選擇與ImageButton的可以選擇不選擇和壓制等....

2

這個代碼顯示瞭如何設置標籤的圖標主機和設置意圖

TabHost tabHost = getTabHost(); 

     // Tab for Photos 
     TabSpec photospec = tabHost.newTabSpec("Photos"); 
     // setting Title and Icon for the Tab 
     photospec.setIndicator("", getApplicationContext().getResources().getDrawable(R.drawable.icon_photos_tab)); 
     Intent photosIntent = new Intent(this, PhotosActivity.class); 
     photospec.setContent(photosIntent); 

     // Tab for Songs 
     TabSpec songspec = tabHost.newTabSpec("Songs"); 
     songspec.setIndicator("", getApplicationContext().getResources().getDrawable(R.drawable.icon_songs_tab)); 
     Intent songsIntent = new Intent(this, SongsActivity.class); 
     songspec.setContent(songsIntent); 


     // Tab for Videos 
     TabSpec videospec = tabHost.newTabSpec("Videos"); 
     videospec.setIndicator("", getApplicationContext().getResources().getDrawable(R.drawable.icon_videos_tab)); 
     Intent videosIntent = new Intent(this, VideosActivity.class); 
     videospec.setContent(videosIntent); 

     // Adding all TabSpec to TabHost 
     tabHost.addTab(photospec); // Adding photos tab 
     tabHost.addTab(songspec); // Adding songs tab 
     tabHost.addTab(videospec); // Adding videos tab 
0

@Suchismita更好地使用TextView而不是TabActivity。 我tabactivity

  • 我無法啓動相同選項卡中的另一個活動面臨以下這些問題,這是我面臨

  • 下一個是定製視圖選項卡,我不能改變分壓器可繪製的主要問題。

  • 而TabActivity在ICS棄用

下一頁使用TextView的,我發現它很容易處理的事件和活動流程,您可以對應用程序的行爲完全控制,你也可以自定義外觀和感覺然而你想要的選項卡。

你對如何實施感興趣嗎?

6

創建一個選擇的XML文件tabicon.xml,並把這個代碼

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/tab_enbled" android:state_selected="true"/> 
    <item android:drawable="@drawable/tab_default" android:state_selected="false"/> 
</selector> 

現在去你的TabActivity,並把這個代碼

TabSpec MyTab = tabhost.newTabSpec("MyTab"); 
MyTab.setIndicator("", getResources().getDrawable(R.drawable.tabicon)); 
//note:if you give some text in setIndicator sometimes the icon will not be showed. 
Intent tabIntent = new Intent(this, TabOne.class); 
TWTTab.setContent(tabIntent); 
0

如果要更改標籤的圖像編程,那麼:

ImageView yourImage= (ImageView)mTabHost.getTabWidget().getChildTabViewAt(youtTabPosition).findViewById(android.R.id.icon); 
yourImage.setImageResource(R.drawable.ic_more_vert_white_24dp); 
相關問題