使用ExpandableListView时,在屏幕底部放置一个菜单栏

时间:2012-01-14 23:14:30

标签: java android xml android-layout

我想出了如何在屏幕顶部显示菜单栏。当我在使用expandableListView创建的主菜单中移动时,它保持在原位。但是,我希望菜单栏位于屏幕底部而不是顶部。我玩了relativeView并在底部找到了条形图,然而,主菜单消失了。 这是我的主要xml文件

<?xml version="1.0" encoding="UTF-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:orientation="vertical" >


<LinearLayout
    android:id="@+id/buttons"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/buttonbefore"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="50"
        android:text="back" />

    <Button
        android:id="@+id/buttonnext"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="50"
        android:text="Next" />
</LinearLayout>

<ExpandableListView
    android:id="@+id/android:list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

<TextView
    android:id="@+id/android:empty"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="@string/main_no_items" />

然后我用它来java让它出现在我的程序中。

   LinearLayout bottomMenu = (LinearLayout)findViewById(R.id.buttons);

我试着玩重力而没有做任何事情。如果您认为它有用,我可以从我的程序中添加更多代码。

2 个答案:

答案 0 :(得分:2)

我假设您的buttons LinearLayout是您所指的'菜单栏'?

您可以使用RelativeLayout或LinearLayout实际完成您正在寻找的内容。

<强>的LinearLayout:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical" >

        <ExpandableListView
            android:id="@android:id/list"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />

        <TextView
            android:id="@android:id/empty"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="@string/main_no_items" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/buttons"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/buttonbefore"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="back" />

        <Button
            android:id="@+id/buttonnext"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Next" />
    </LinearLayout>

</LinearLayout>

按钮通过设置重力进行底部对齐,而列表被告知占用所有其他可用空间,通过赋予它“1”的权重并将高度设置为“0dp”。这将导致它尽可能地拉伸,而不会将按钮推离屏幕。

<强> RelativeLayout的:

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

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@+id/buttons"
        android:orientation="vertical" >

        <ExpandableListView
            android:id="@android:id/list"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />

        <TextView
            android:id="@android:id/empty"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="@string/main_no_items" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/buttons"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/buttonbefore"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="back" />

        <Button
            android:id="@+id/buttonnext"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Next" />
    </LinearLayout>

</RelativeLayout>

通过在父级上设置对齐,按钮是底部对齐的。该列表被告知填充所有高度,但保持在按钮上方。

总的来说:为了实现这一点,我非常确定列表和空视图需要在他们自己的布局中组合在一起。

答案 1 :(得分:0)

将按钮对齐到底部的方法是将顶级LinearLayout更改为RelativeLayout。然后,您可以将属性android:layout_alignParentBottom="true"添加到包含两个按钮的LinearLayout @+id/buttons