为什么我TabHost的setIndicator设置了图片,但是我的应用显示却显示不出来呢
// th_host = (TabHost) this.findViewById(R.id.th_host);
th_host = getTabHost();
TabSpec ts_list = th_host.newTabSpec("List");
ts_list.setIndicator("列表",
getResources().getDrawable(R.drawable.list));
ts_list.setContent(R.id.lv_address);
th_host.addTab(ts_list);
TabSpec ts_edit = th_host.newTabSpec("Edit");
ts_edit.setIndicator("添加",
getResources().getDrawable(R.drawable.restaurant));
ts_edit.setContent(R.id.tb_details);
th_host.addTab(ts_edit);
哪里有问题呢?
谢谢 --------------------编程问答-------------------- 我发现只要我删除Manifest下面的这个设置就可以正常显示了
这是为什么呢、?
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" /> --------------------编程问答-------------------- 个人感觉如下:
现在的代码貌似不支持同时显示图片和文字一样,你去看系统的源代码,在TabHost.java中。
final boolean exclusive = iconView.getVisibility() == View.GONE;
final boolean bindIcon = !exclusive || TextUtils.isEmpty(mLabel);
if (bindIcon && mIcon != null) {
iconView.setImageDrawable(mIcon);
iconView.setVisibility(VISIBLE);
}
这里有一个exclusive判断ImageView是否显示。再看对应的tab_indicator_holo.xml文件。
<ImageView
android:id="@android:id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:visibility="gone" />
看到没有,这里是不显示图片的,也就是说,只有在文字为空的时候才显示图片。
个人理解是android自己定义的布局吧。
如果你把AndroidManifest.xml中的代码去掉:
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
是可以显示的,应该是以前的代码支持双显示吧。------以上为个人想法。 --------------------编程问答-------------------- 楼主可以在AndroidManifest的Application中改变一下程序的主题:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black" >这里改成了Tehme.Black --------------------编程问答-------------------- 下面这样试试:
TabHost mTabHost = getTabHost();
LayoutInflater inflater_tab1 = LayoutInflater.from(this);
inflater_tab1.inflate(R.layout.mgtlayout, mTabHost.getTabContentView());
inflater_tab1.inflate(R.layout.testlayout, mTabHost.getTabContentView());
inflater_tab1.inflate(R.layout.conflayout, mTabHost.getTabContentView());
inflater_tab1.inflate(R.layout.runlayout, mTabHost.getTabContentView());
//mTabHost.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_bg_top));
mTabHost.addTab(mTabHost
.newTabSpec("tab_mgt")
.setIndicator("系统管理",getResources().getDrawable(R.drawable.ic_home))
.setContent(R.id.LinearLayoutmgt)
);
mTabHost.addTab(mTabHost
.newTabSpec("tab_test")
.setIndicator("测试模式",getResources().getDrawable(R.drawable.ic_test))
.setContent(R.id.LinearLayouttest)
);
mTabHost.addTab(mTabHost
.newTabSpec("tab_conf")
.setIndicator("设置模式",getResources().getDrawable(R.drawable.ic_set))
.setContent(R.id.LinearLayoutconf)
);
mTabHost.addTab(mTabHost
.newTabSpec("tab_run")
.setIndicator("运行模式",getResources().getDrawable(R.drawable.ic_run))
.setContent(R.id.LinearLayoutrun)
);
补充:移动开发 , Android