tabhost / tabbar图标未显示

时间:2013-02-26 11:54:13

标签: android xml icons android-tabhost tabbar

我的标签栏图标不会显示

TabHost tabHost = getTabHost();

TabSpec barcodeInsertSpec = tabHost.newTabSpec("Barcode Insert");
barcodeInsertSpec.setIndicator("Barcode Insert", getResources().getDrawable(R.drawable.home2));
barcodeInsertSpec.setContent(new Intent(getBaseContext(), BarcodeInsertActivity.class));

tabHost.addTab(barcodeInsertSpec);

抽拉/ home2.xml

<?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- When not selected, use that-->
        <item android:drawable="@drawable/home22" />
    </selector>

并将图片放入三个不同大小的文件夹(48x48,32x32,24x24)drawable-hdpi ,drawable-ldpi,... as .p​​ng

喜欢drawable-hdpi / home22.png

5 个答案:

答案 0 :(得分:1)

试试这段代码

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
     <item  android:state_focused="true"
            android:state_pressed="true"
            android:drawable="@drawable/button0_click"></item>
    <item   android:state_focused="true"
            android:state_pressed="false"
            android:drawable="@drawable/button0_click"></item>
    <item
            android:state_focused="false"
            android:state_pressed="true"
            android:drawable="@drawable/button0_click" />
     <item 
            android:drawable="@drawable/button0"></item>

</selector>

答案 1 :(得分:0)

这段代码对我有用:)

Resources res=getResources();
TabHost Tabs = (TabHost) findViewById(R.id.your_id);
Tabs.setup();
TabHost.TabSpec spec;
spec = Tabs.newTabSpec("tag1");
spec.setContent(R.id.tab1);
spec.setIndicator("Home", res.getDrawable(R.drawable.home_icon));
Tabs.addTab(spec);

答案 2 :(得分:0)

嗨像这样使用drawable选择器文件。

<?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/select" />
  <item
    android:state_selected="false"
    android:drawable="@drawable/deselct" />
</selector>

答案 3 :(得分:0)

我使用Xamarin时遇到了同样的问题。

这是一个黑客解决方案,显示图标但不显示文本(看起来像一个android缺陷):

这个解决方案显示了这两个,但它给我的应用程序范围的样式,这表明我可能会设置样式覆盖:

编辑2013年10月10日 - 我让它在c#中工作了! 在java

中做同样的事情应该是直截了当的

我能够获得标签,显示包含代码和自定义样式的图标。见下文

<强> tab_indicator_holo.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="@dimen/tab_host_default_height"
android:orientation="horizontal"
style="@style/TabBlood"
android:gravity="center">

<ImageView
    android:id="@android:id/icon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:visibility="visible"
    android:contentDescription="@null" />

<TextView
    android:id="@android:id/title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    style="@style/TabTextBlood" />

</LinearLayout>

我的活动OnCreate:

...
var spec = this.TabHost.NewTabSpec(tag);
var drawableIcon = Resources.GetDrawable(drawableId);
View tabIndicator = LayoutInflater.From(this).Inflate(Resource.Layout.tab_indicator_holo, this.TabHost.TabWidget, false);
TextView title = tabIndicator.FindViewById<TextView>(Android.Resource.Id.Title);
ImageView img = tabIndicator.FindViewById<ImageView>(Android.Resource.Id.Icon);
title.Text = label;
img.SetImageDrawable(drawableIcon);
spec.SetIndicator(tabIndicator);
spec.SetContent(intent);
this.TabHost.AddTab(spec);

答案 4 :(得分:0)

试试这个。

  TabHost th = getTabHost();
  TabHost.TabSpec sp;
  sp=th.newTabSpec("tab 1");
  sp.setIndicator("Home");
  sp.setContent(new Intent(this, Welcome.class));
  th.addTab(sp);
  tabhost.getTabWidget().getChildAt(0).setBackgroundResource(R.drawable.YOURIMAGE);

*您还可以使用自定义项目选择器代替drawable来制作聚焦和按下的效果。 干杯!