Я хочу показать кнопку под ListView
. Проблема в том, что если ListView
будет расширен (элементы добавлены ...), кнопка будет выдвинута за пределы экрана.
Я пробовал LinearLayout
с весами (как предложено в Android: почему нет maxHeight для View? ), но либо я неправильно понял вес, либо он просто не работал.
Также я нашел где-то подсказку, чтобы использовать RelativeLayout
. ListView
будет затем установлен над кнопкой с параметром android:layout_above
.
Проблема в том, что я не знаю, как потом расположить кнопку. В найденном мной примере вид под ListView
был настроен с помощью android:layout_alignParentBottom
, но я не хочу, чтобы моя кнопка цеплялась за нижнюю часть экрана.
Есть ли какие-либо идеи, кроме использования метода setHeight и некоторого вычисления требуемого пространства?
Edit:
Я получил много полезных ответов.
bigstone & user639183 почти работало отлично. Тем не менее, мне пришлось добавить дополнительный отступ / отступ к нижней части кнопки, так как он все еще будет выталкиваться на полпути из экрана (но затем останавливаться)
Ответ Adinia с относительной разметкой подходит только для кнопки, закрепленной в нижней части экрана. Это не то, что я намеревался, но все же может быть полезно для других.
Решение AngeloS было тем, которое я выбрал в конце, поскольку оно только создавало эффекты, которые я хотел. Однако я сделал два небольших изменения в LinearLayout
вокруг кнопки:
Во-первых, поскольку я не хотел, чтобы в моем макете были абсолютные значения, я изменил android:layout_height="45px"
на wrap_content
, что также прекрасно работает.
Во-вторых, так как я хотел, чтобы кнопка располагалась по центру по горизонтали, что поддерживается только по вертикали LinearLayout
, я изменил Android: ориентация = "горизонтальная" на "вертикальная".
AngeloS также заявил в своем первоначальном посте, что он не был уверен, имел ли какой-либо параметр android:layout_weight="0.1"
в LinearLayout
вокруг ListView
какое-либо влияние; Я только попробовал, и это действительно делает! Без этого кнопка снова выходит за пределы экрана.