Размещение строки меню в нижней части экрана при использовании ExpandableListView - PullRequest
0 голосов
/ 15 января 2012

Я разобрался, как получить строку меню в верхней части экрана. Он остается на месте, пока я перемещаюсь по главному меню, которое я создал с помощью expandableListView. Тем не менее, я бы хотел, чтобы строка меню находилась внизу экрана, а не сверху. Я поиграл с относительным видом и получил панель внизу, однако главное меню исчезает. Вот мой основной 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 ]

2 голосов
/ 15 января 2012

Я предполагаю, что ваш 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>

Кнопки выравниваются снизу, устанавливая выравнивание на родительском элементе. В списке указано заполнить всю высоту, но оставайтесь «над» кнопками.

На заметку общего характера: для того, чтобы это работало, я почти уверен, что список и пустые представления должны быть объединены вместе в их собственном макете.

0 голосов
/ 15 января 2012

Способ выравнивания кнопок по низу состоит в том, чтобы изменить верхний уровень LinearLayout на RelativeLayout.Затем вы можете добавить атрибут android:layout_alignParentBottom="true" к вашему LinearLayout @+id/buttons, который содержит две ваши кнопки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...