在LinearLayout下使用FrameLayout的TabHost

时间:2011-03-10 21:16:05

标签: android xml

我的xml文件和包含显示ListActivity的FrameLayout的TabHost有一个小问题。一个小的LinearLayout应位于底部,但这总是显示在ListActivity的前面,因此即使向下滚动ListView,ListLctivity中的项也位于LinearLayout后面。我尝试了很多不同布局的组合,但我找不到解决方案:|

也许你有个主意?

谢谢!

这张照片可能解释了我的担忧:http://img822.imageshack.us/i/listactivity.png/

这是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">

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

             <TabWidget
                     android:id="@android:id/tabs"
                     android:layout_width="fill_parent"
                     android:layout_height="wrap_content" />
             <FrameLayout
                     android:id="@android:id/tabcontent"
                     android:layout_width="fill_parent"
                     android:layout_height="fill_parent"/>
      </LinearLayout>

      <LinearLayout
             xmlns:android="http://schemas.android.com/apk/res/android"
             android:orientation="vertical"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:layout_gravity="bottom"
             android:background="#231f20">

             <TextView
                     android:layout_width="fill_parent"
                     android:layout_height="wrap_content"
                     android:text="There are items behind me..." />

             <Button
                     android:id="@+string/connect"
                     android:layout_height="wrap_content"
                     android:layout_width="wrap_content"
                     android:text="Connect" 
                     android:layout_gravity="center_horizontal"
                     android:layout_margin="5dp"/>


      </LinearLayout>

2 个答案:

答案 0 :(得分:3)

您可以使用RelativeLayout实现您想要的效果:

<?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:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <TabWidget
            android:id="@+id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" 
            android:layout_alignParentTop="true"/>
        <FrameLayout
            android:id="@+id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_below="@id/tabs"
            android:layout_above="@+id/footer"  />
        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/footer"
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"             
            android:background="#231f20"
            android:layout_alignParentBottom="true">             

            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="There are items behind me..." />

            <Button
                android:id="@+string/connect"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:text="Connect" 
                android:layout_gravity="center_horizontal"
                android:layout_margin="5dp"/>
        </LinearLayout>            
    </RelativeLayout>      
</TabHost>

答案 1 :(得分:0)

以下是我在其中一个应用中使用的布局示例:

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

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

        <!-- This layout will always remain on top -->
        <LinearLayout
        android:id="@+id/TopBarLayout"
        android:background="@drawable/textview_bottom"
        android:layout_weight="10"
        android:paddingLeft="10dip"
        android:paddingRight="10dip"
        android:orientation="horizontal"
        android:gravity="center_vertical|left"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:weightSum="100"
        >

                <TextView
                android:layout_marginRight="5dip"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Mode »"
                />

                <Button
                style="@style/Tab_Button"
                android:id="@+id/ModeChangeButton"
                />

                <TextView
                android:layout_marginRight="5dip"
                android:layout_marginLeft="5dip"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="»"
                />

                <Button
                android:paddingRight="5dip"
                android:paddingLeft="5dip"
                style="@style/Tab_Button"
                android:id="@+id/DateChangeButton"
                />

                <View
                android:layout_weight="100"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                />

                <ImageButton
                style="@style/Tab_Button"
                android:id="@+id/ConfigButton"
                android:src="@drawable/gear"
                />

        </LinearLayout>

        <!-- Frame for tab content -->
        <FrameLayout
        android:background="#000000"
        android:layout_weight="78"
        android:id="@android:id/tabcontent"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        />

        <!-- Tabs at bottom of screen -->
        <TabWidget
        android:background="@drawable/textview_top"
        android:layout_weight="12"
        android:id="@android:id/tabs"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        />

</LinearLayout>
</TabHost>

在这里,我的LinearLayout位于屏幕的 top ,但这是一个简单的修复。您可能希望使用此处显示的layout_weight