带有文本和图像的标签视图不显示文本

时间:2014-01-04 06:49:50

标签: android android-tabhost

我是android的新手。我正在使用一些文本和图像测试TabView。图像显示但文字没有。 android SDK版本是4.4.3。帮我找到它。我看了很多其他的地方,但没有一个适合我。

这是代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TabHost tabHost =(TabHost) findViewById(R.id.tabHost);
    tabHost.setup();


    TabHost.TabSpec spec=tabHost.newTabSpec("mitab1");
    spec.setContent(R.id.tab1);
    //spec.setIndicator("",getResources().getDrawable(android.R.drawable.ic_menu_rotate));
    spec.setIndicator(prepareTabView("ABCD", R.drawable.talk));


    TabHost.TabSpec spec1=tabHost.newTabSpec("mitab1");
    spec1.setContent(R.id.tab2);
    spec1.setIndicator(prepareTabView("CDEF", R.drawable.ball));



    tabHost.addTab(spec);
    tabHost.addTab(spec1);


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}


private  View prepareTabView(String text, int resId) {
    View view = LayoutInflater.from(this).inflate(R.layout.tabcustom, null);
    ImageView iv = (ImageView) view.findViewById(R.id.TabImageView);
    TextView tv = (TextView) view.findViewById(R.id.TabTextView);
    iv.setImageResource(resId);
    tv.setText(text);
    return view;

}

这是tabcustom.xml:

 <LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
 android:id="@+id/TabLayout"
 android:padding="5dip"
 android:gravity="center"
android:orientation="vertical" >


    <ImageView
         android:id="@+id/TabImageView"
         android:src="@drawable/football"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"/>

    <TextView
         android:id="@+id/TabTextView"
         android:text="Text"
         android:paddingTop="5dip"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:textColor="#ffffff"
        />

1 个答案:

答案 0 :(得分:0)

布局的方向为Vertical,这就是为什么文字会显示在标签的底部&amp;如果选项卡背景颜色与文本颜色相同,则更改文本颜色。您可以使用以下代码显示带有背景图像的中心文本。

更改xml:

<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:id="@+id/TabLayout"
 android:padding="5dip"
 android:gravity="center"
 android:orientation="vertical" >


    <TextView
         android:id="@+id/TabTextView"
         android:text="Text"
         android:paddingTop="5dip"
         android:layout_width="fill_parent"
         android:gravity="center"
         android:layout_height="wrap_content"
         android:textColor="#ffffff"
        />

类别:

private  View prepareTabView(String text, int resId) {
    View view = LayoutInflater.from(this).inflate(R.layout.tabcustom, null);
    LinearLayout iv = (LinearLayout) view.findViewById(R.id.TabLayout);
    TextView tv = (TextView) view.findViewById(R.id.TabTextView);
    iv.setImageResource(resId);
    tv.setText(text);
    return view;}