Цель
A FrameLayout
состоит в том, чтобы накладывать друг на друга вещи.Это не то, что вам нужно.
В вашем примере RelativeLayout
вы устанавливаете высоту и ширину ListView
s равными MATCH_PARENT
, это заставит его занимать столько же места, что и его родительи, таким образом, занимают все пространство на странице (и закрывает кнопку).
Попробуйте что-то вроде:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ListView
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0"/>
</LinearLayout>
layout_weight
определяет, как использовать дополнительное пространство.Button
не хочет растягиваться за пределы требуемого пространства, поэтому его вес равен 0. ListView
хочет занять все дополнительное пространство, поэтому он имеет вес 1.
Вы могли бы сделать что-то подобное, используя RelativeLayout
, но если это только эти два пункта, то я думаю, что LinearLayout
проще.