当前位置:编程学习 > wap >>

为什么我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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,