1

我的标签栏图标不会显示

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

4

5 回答 5

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>
于 2013-02-26T12:43:30.293 回答
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 来制作聚焦和按下效果。干杯!

于 2014-07-07T05:44:35.427 回答
0

嗨使用这样的可绘制选择器文件。

<?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>
于 2013-02-26T12:34:47.327 回答
0

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

这是一个显示图标但不显示文本的 hack 解决方案(看起来像 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);
于 2013-09-21T02:09:50.117 回答
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);
于 2013-02-26T12:16:16.160 回答