android 在标签页题目上加图标

华宰 发布于 2011/09/08 11:53
阅读 2K+
收藏 3

原文出处:http://marshal.easymorse.com/archives/2316

android做的没有iphone好看,现在都2.1版本了,依然是如此。

使用android的api,如果想在标签页的题目上带个图片,也只能是这样了。

这里使用了类似这样的代码:

tabHost.addTab(tabHost.newTabSpec("landscapes").setIndicator("风景", 
                getResources().getDrawable(R.drawable.a2))

其中a2是放置在res/drawable目录下的图形文件,比如a2.gif。

如果想要更复杂的布局,比如图片和文字是在同一行的,那么,就需要用到这个方法:

setIndicator(View view)

这样问题就复杂了,需要自定义布局,背景和格式,不过也不算难实现。

那么,如果想选择的tab图标是彩色的,未选中的图标是灰色的呢?也就是说想让图标是变化的。这就难办了。因为android本身没有提供这样的api调用。

如果想做的话,就需要用蛮力了。可以参考这个帖子:

http://stackoverflow.com/questions/36881/updating-android-tab-icons

里面提供了这样的代码,据说是可行的:

tabHost.setOnTabChangedListener(new OnTabChangeListener() { 
	public void onTabChanged(String tabId) { 
	if (TAB_MAP.equals(tabId)) { 
		ImageView iv = (ImageView)tabHost.getTabWidget().getChildAt(0).findViewById(android.R.id.icon); 
		iv.setImageDrawable(getResources().getDrawable(R.drawable.tab_map_black)); 
		iv = (ImageView)tabHost.getTabWidget().getChildAt(1).findViewById(android.R.id.icon); 
		iv.setImageDrawable(getResources().getDrawable(R.drawable.tab_list_white)); 
	} else if (TAB_LIST.equals(tabId)) { 
		ImageView iv = (ImageView)tabHost.getTabWidget().getChildAt(0).findViewById(android.R.id.icon); 
		iv.setImageDrawable(getResources().getDrawable(R.drawable.tab_map_white)); 
		iv = (ImageView)tabHost.getTabWidget().getChildAt(1).findViewById(android.R.id.icon); 
		iv.setImageDrawable(getResources().getDrawable(R.drawable.tab_list_black)); 
	} 
	} 
});

加载中
返回顶部
顶部