我在我的應用程序中使用TabHost,我在我的應用程序中使用了四個選項卡,並且當特定選項卡被選中並未選中時,我想在TabHost中使用不同的圖像。我需要爲每個特定的選項卡使用不同的圖像。如何更改TabHost中的選項卡圖像
當我選擇任何選項卡時,圖像不明亮,當我切換到另一個選項卡時,明亮的圖像變成灰色陰影。
我已經實現了TabHost,但我不知道如何更改TabHost中的圖像。
任何人都可以幫助我。
感謝, 大衛
我在我的應用程序中使用TabHost,我在我的應用程序中使用了四個選項卡,並且當特定選項卡被選中並未選中時,我想在TabHost中使用不同的圖像。我需要爲每個特定的選項卡使用不同的圖像。如何更改TabHost中的選項卡圖像
當我選擇任何選項卡時,圖像不明亮,當我切換到另一個選項卡時,明亮的圖像變成灰色陰影。
我已經實現了TabHost,但我不知道如何更改TabHost中的圖像。
任何人都可以幫助我。
感謝, 大衛
如果您希望使用不同的圖像用於選定和未選定狀態,然後創建您的繪圖資源文件夾「選擇」 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繪製資源。
設置文本&圖標,我們需要使用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));
使用此功能來設置單獨的圖像爲每個標籤
獲取更多信息http://www.androidpeople.com/android-tabhost-tutorial-part-2/ – bharath 2010-12-22 09:28:38
我不想使用文本和圖標,我想更改所選表單和未選擇表單上的選項卡的圖像。 – 2010-12-22 10:32:09
在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的,可繪製)被調用來設置標籤的文本和圖標相同的代碼。
首先你必須有兩個圖像,因爲你想從一個到另一個,所以你需要這兩個圖像,你必須把它放在三個可繪製的文件夾。
在我的例子我有圖片,一個叫icon1.png和icon2.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文件,你在繪製文件夾中創建。
就是這樣!希望這可以幫助你。
您可以使用的ImageButton這是更好,因爲一個ImageView的可以選擇,而不是選擇與ImageButton的可以選擇不選擇和壓制等....
這個代碼顯示瞭如何設置標籤的圖標主機和設置意圖
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
@Suchismita更好地使用TextView而不是TabActivity。 我tabactivity
我無法啓動相同選項卡中的另一個活動面臨以下這些問題,這是我面臨
下一個是定製視圖選項卡,我不能改變分壓器可繪製的主要問題。
下一頁使用TextView的,我發現它很容易處理的事件和活動流程,您可以對應用程序的行爲完全控制,你也可以自定義外觀和感覺然而你想要的選項卡。
你對如何實施感興趣嗎?
創建一個選擇的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);
如果要更改標籤的圖像編程,那麼:
ImageView yourImage= (ImageView)mTabHost.getTabWidget().getChildTabViewAt(youtTabPosition).findViewById(android.R.id.icon);
yourImage.setImageResource(R.drawable.ic_more_vert_white_24dp);
@Suchismita答案被原始海報接受。這個賞金的目的是什麼? – Ronnie 2012-12-04 15:43:53