我在我的应用程序中使用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