Android: скрытая панель кнопок, как в приложении Hotmail - PullRequest
0 голосов
/ 15 декабря 2011

Рассмотрим приложение Hotmail для Android. При проверке элемента электронной почты внизу появляются три кнопки: [Пометить как прочитанное] [Пометить как непрочитанное] [Удалить] Когда вы снимите флажок, кнопки снова исчезнут.

Какой макет для этого? Я пробовал это, но это приводит к проблемам с прокруткой внизу (не видно последний элемент):

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

    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/black" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:background="@android:color/darker_gray"
    android:orientation="horizontal"
    android:paddingLeft="5dip"
    android:paddingRight="5dip"
    android:paddingTop="5dip" >

    <Button
        android:id="@+id/bottom"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:enabled="false"
        android:text="@string/mark_read" />
</LinearLayout>

Тогда мне тоже нужно показать / скрыть это?

1 Ответ

2 голосов
/ 15 декабря 2011

Изменение видимости нижнего линейного слоя покажет / скроет его. Вам нужно будет дать ему идентификатор, а затем

LinearLayout bottomLayout = (LinearLayout)findViewById(R.id.someId);
bottomLayout.setVisibility(View.GONE)// or View.VISIBLE

Что касается проблемы с прокруткой, которая возникает из-за того, что RelativeLayout накладывается на компоненты представления, поэтому вы можете либо показать / скрыть кнопку, перекрывающую нижнюю часть ListView, либо изменить Relativelayout на LinearLayout, чтобы ListView заканчивался перед кнопкой и изменял видимость

Хотя я не уверен, что это будет выглядеть очень хорошо, когда вы внезапно показываете кнопку, а ListView должен изменить свой размер.

Примечание о видимости

setVisibility(View.GONE);

удалит вид из макета, и другие компоненты могут изменить размер из-за этого. Однако, используя

setVisibility(View.INVISIBLE);

сохраняет пространство, занимаемое представлением в макете, и просто делает вид невидимым, и изменение размера не произойдет.

...