如何从xml中设置android tabwidget中的tab高度?

时间:2013-03-13 14:46:40

标签: android

我尝试了解决方案:

mTabHost.getTabWidget().getChildAt(i).setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,100));

但我想用XML来做这件事。

这是我的布局:

<android.support.v4.app.FragmentTabHost
        android:id="@android:id/tabhost"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginRight="10dp" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical" >

            <TabWidget
                android:id="@android:id/tabs"
                style="@style/tab"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="0"
                android:orientation="horizontal"
                android:textColor="@drawable/tab_text_selector" />

            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:layout_weight="0" />

            <FrameLayout
                android:id="@+android:id/realtabcontent"
                android:layout_width="fill_parent"
                android:layout_height="0dp"
                android:layout_weight="1" />
        </LinearLayout>
    </android.support.v4.app.FragmentTabHost>

我试图设置TabWidget的高度,但没有结果。

我为单个标签使用自定义视图:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ImageView android:id="@+id/img_tab"
        android:layout_height="30dp"
        android:layout_width="30dp"
        android:scaleType="centerCrop"
        android:layout_alignParentLeft="true"
        android:layout_margin="5dp"
    />

    <TextView
        android:id="@+id/txv_tab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:textSize="22sp"
        android:textAllCaps="true"
        android:textIsSelectable="false"
        android:layout_toRightOf="@+id/img_tab"
        android:layout_margin="5dp">
    </TextView>

    <View android:id="@+id/tab_border" 
        android:layout_width="match_parent"
        android:layout_height="5dp"
        android:layout_alignParentBottom="true"
        android:background="@android:color/holo_green_light"
        />

</RelativeLayout>

我尝试设置relativelayout高度,但每次我都获得全屏高度标签。

如何设置高度?

2 个答案:

答案 0 :(得分:3)

我认为不可能从xml在android tabwidget中设置标签高度。我从来没有找到办法做到这一点。 为了避免不良影响的问题,我创建了一个非常简单的类:

public class TipoDisp 
{ 

  public static int alt_tabs(Context cont)
  {
    int alt;
    int dx, dy;
    DisplayMetrics metrics = cont.getResources().getDisplayMetrics();


    dx = metrics.widthPixels;
    dy = metrics.heightPixels;
    if (dx < dy)
        alt = dy/15;
    else
        alt = dy/10;

    return alt;
   }
}

然后,在活动中我使用了这样的东西:

    int alt = TipoDisp.alt_tabs(myactivity.this);
    mTabHost.getTabWidget().getChildAt(i).getLayoutParams().height = alt;
    .....

希望这会有所帮助

答案 1 :(得分:0)

假设我们要设置第一个标签的高度,然后你要做的是:

 mTabHost.getTabWidget().getChildAt(0).getLayoutParams().height=100;

mTab​​Host =它是我自己的tabhost。将您的tabhost名称放在那里 我设置高度100dp。现在您根据自己的要求进行更改。感谢