如何在中心tabhost中设置图像?

时间:2014-10-24 19:02:49

标签: android android-tabhost

有人知道我如何在中心标签设置图像? 我试图改变我的xml但没有工作。

在我的xml下面:

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <RelativeLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"/>
        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"/>
    </RelativeLayout>
</TabHost>

我的代码活动:

@SuppressWarnings("deprecation")
        final
        TabHost tabHost = getTabHost();

        // Tab 1
        TabSpec aba1spec = tabHost.newTabSpec("Tab 1");
        // setting Title and Icon for the Tab
        tabHost.getTabWidget().setStripEnabled(false);
        aba1spec.setIndicator("",getResources().getDrawable(R.drawable.tab1));
        Intent tab1 = new Intent(this, tab1.class);
        aba1spec.setContent(tab1);

        // Adding all TabSpec to TabHost
        tabHost.addTab(aba1spec); // Adding tab1

图像:

enter image description here

非常感谢。

1 个答案:

答案 0 :(得分:2)

1) - 创建一个名为my_xml.xml或您喜欢的任何名称的布局文件。

在report_tabs中使用此代码。

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/layout_tabsLayout"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:background="@drawable/btn_selector"
 android:gravity="center"
 android:orientation="vertical"
 >

 <ImageView
 android:id="@+id/img_icon"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_gravity="center"
 android:layout_marginTop="3dp"
 />
</LinearLayout>

2) - 并在您的活动中使用以下代码。

Intent intent;
tabhost = getTabHost();
TabHost.TabSpec tabspec;
intent = new Intent().setClass(getApplicationContext(),xxxxx.class);

tabspec = tabhost.newTabSpec("First");
view = LayoutInflater.from(this).inflate(R.layout.report_tabs,
tabhost.getTabWidget(), false);
imgtabF = (ImageView) view.findViewById(R.id.img_icon);
imgtabF.setBackgroundResource(R.drawable.tab_icon_selector);

tabspec.setIndicator(view);
tabspec.setContent(intent);
tabhost.addTab(tabspec);

3) - 在drawable中创建一个名为tab_icon_selector的文件,用于更改选项卡上的图标,如下所示: -

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Non focused states -->
<item android:state_focused="false" android:state_selected="false" 
      android:state_pressed="false" android:drawable="@drawable/medical_icon_unselect"    
 />
 <item android:state_focused="false" android:state_selected="true" 
 android:state_pressed="false" android:drawable="@drawable/medical_icon_sel" /> 
 <!-- Focused states -->
 <item android:state_focused="true" android:state_selected="false" 
 android:state_pressed="false" android:drawable="@drawable/medical_icon_sel" />
 <item android:state_focused="true" android:state_selected="true" 
 android:state_pressed="false" android:drawable="@drawable/medical_icon_sel" /> 
 <!-- Pressed -->
 <item android:state_pressed="true" android:drawable="@android:color/transparent"/> 
 </selector>

现在,您可以创建自定义标签栏,图像图标将位于标签的中心。

source