如何使用xml或java设置FragmentTabHost动态高度

时间:2015-04-20 11:40:59

标签: java android xml android-fragments

到目前为止,我的代码使用的是FragmentTabHost;问题是高度不会动态变化(300dp)与大屏幕不兼容       

    <android.support.v4.app.FragmentTabHost
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="match_parent"
    android:layout_height="300dp" >

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

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom" />

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>
    </android.support.v4.app.FragmentTabHost>

<LinearLayout 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <TextView android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Counter counter 10:00:00"
              android:textColor="@color/red"
              android:textStyle="bold"/>
</LinearLayout>

    <RelativeLayout
        style="@style/MyActionBar"
        android:layout_width="fill_parent"
        android:layout_height="20dp"
        android:layout_weight="2"
        android:background="@color/darkactionb"
        android:gravity="bottom" >

        <ImageView
            android:id="@+id/action_bar_addtarget"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="false"
            android:layout_alignParentTop="false"
            android:layout_alignWithParentIfMissing="false"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:contentDescription="@string/Login"
            android:cropToPadding="true"
            android:gravity="bottom"
            android:padding="@dimen/abc_action_bar_icon_vertical_padding_material"
            android:scaleType="fitStart"
            android:src="@drawable/custom_actionbar_icon_bottom_call_target"
            android:visibility="visible" />

        <ImageView
            android:id="@+id/action_bar_filter"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:adjustViewBounds="false"
            android:contentDescription="@string/Login"
            android:onClick="showCallResult"
            android:padding="@dimen/abc_action_bar_icon_vertical_padding_material"
            android:src="@drawable/custom_actionbar_icon_bottom_edit_callresult"
            android:visibility="visible" />

        <ImageView
            android:id="@+id/action_bar_autodial"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:contentDescription="@string/Login"
            android:onClick="showDialpad"
            android:padding="@dimen/abc_action_bar_icon_vertical_padding_material"
            android:scaleType="center"
            android:src="@drawable/custom_actionbar_icon_bottom_home_list"
            android:visibility="visible" />

    </RelativeLayout>   
</LinearLayout>

1 个答案:

答案 0 :(得分:1)

wrap_content不能正常工作以及文本/图片大小变换标签不会放大的问题是什么?

如果是的话:

不知道为什么它不应用xml设置,但是如果以进行方式设置它看起来没问题,例如:

 ... some code that defines an add tabs to code FragmentTabHost ...
 for (int i = 0; i < tabhost.getTabWidget().getChildCount(); i++) {
      LinearLayout.LayoutParams params 
               = new LinearLayout.LayoutParams(                 
                    LinearLayout.LayoutParams.MATCH_PARENT,
                    LinearLayout.LayoutParams.MATCH_PARENT);
      params.weight = 50;
      tabhost.getTabWidget().getChildAt(i).setLayoutParams(params);
 }

希望这有帮助。