选项卡视图下方的操作栏

时间:2011-08-29 09:27:38

标签: android android-layout tabs

我想在此示例中创建一个TabView:http://developer.android.com/resources/tutorials/views/hello-tabwidget.html

在它下面,我想要一个带有按钮的操作栏,它应该始终显示在屏幕的底部。怎么样当我将另一个具有垂直方向的LinearLayout放置到TabHost时,它会消失超出屏幕限制。这是我的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"
        android:padding="5dp">

        <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"
            android:padding="5dp" />

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

            <Button android:text="Add" android:layout_height="wrap_content"
                android:layout_width="wrap_content" />
            <ToggleButton android:text="Aus" android:layout_height="wrap_content"
                android:layout_width="wrap_content" />
        </LinearLayout>
    </LinearLayout>
</TabHost>

有没有办法动态地执行此操作?

编辑:添加了我的xml代码

3 个答案:

答案 0 :(得分:0)

您可能需要在另一个线性布局中包围“操作栏”和其他线性布局。

因此,您的标签为其内容提供了线性布局。 在该线性布局中,您可以获得真实内容的线性布局。 然后你有你的行动吧。

Psuedo代码:

<LinearLayout...>
    <LinearLayout...>
        <!-- Views here for the content of the tab -->
    </LinearLayout>
    <MyActionBarView...>
    </MyActionBarView>
</LinearLayout>

答案 1 :(得分:0)

在那个布局定义中,必须给出一些东西。目前,标签内容的FrameLayout和它下面的LinearLayout都要求用“android:layout_height =”fill_parent“来填充屏幕的剩余高度。

为了做您期望的事情,您需要定义“操作栏”LinearLayout以垂直包装其内容,并告诉FrameLayout简单地填充选项卡之间的可用空间那个底栏。我们通过添加权重参数来做到这一点。我已经用以下两件事修改了你的内部布局:

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

  <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"
    android:layout_weight="1"
    android:padding="5dp" />

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

    <Button android:text="Add"
      android:layout_height="wrap_content"
      android:layout_width="wrap_content" />
    <ToggleButton android:text="Aus"
      android:layout_height="wrap_content"
      android:layout_width="wrap_content" />
  </LinearLayout>
</LinearLayout>

希望有帮助!

答案 2 :(得分:0)

我通过在android-layout标签中搜索关键字bottom找到了答案。答案是相对布局。这是功能正常的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"
        android:padding="5dp">

        <TabWidget android:id="@android:id/tabs"
            android:layout_width="fill_parent" android:layout_height="wrap_content"
            android:layout_alignParentTop="true" />

        <RelativeLayout android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:id="@+id/relativeLayout1"
            android:layout_alignParentBottom="true">

            <Button android:text="Add" android:layout_height="wrap_content"
                android:layout_width="wrap_content" android:layout_alignParentLeft="true" />
            <ToggleButton android:text="Aus" android:layout_height="wrap_content"
                android:layout_width="wrap_content" android:layout_alignParentRight="true" />
        </RelativeLayout>

        <FrameLayout android:layout_width="fill_parent"
            android:id="@android:id/tabcontent" android:layout_height="wrap_content"
            android:padding="5dp" android:layout_below="@android:id/tabs"
            android:layout_alignParentLeft="true"></FrameLayout>
    </RelativeLayout>
</TabHost>