1. ホーム
  2. android

Android: ボタンを下に、リストビューを上に配置するにはどうすればよいですか?

2023-10-24 11:55:42

質問

リストビューの一番下にボタンを設置したい。

relativeLayout/FrameLayoutを使用すると、位置は揃うのですが、listViewが一番下まで下がってしまいます。

(最下段のボタンの裏側)

FrameLayoutです。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />
    <FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignParentBottom="true">
        <Button
            android:id="@+id/btnButton"
            android:text="Hello"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom" />
    </FrameLayout>
</FrameLayout>

RelativeLayoutです。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true">
        <Button
            android:id="@+id/btnButton"
            android:text="Hello"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom" />
    </RelativeLayout>
</RelativeLayout>

上記の2つのコードは、最初の画像のようにしか動作しません。私が欲しいのは2番目の画像です。

誰か助けてくれますか?

ありがとうございます。

どのように解決するのですか?

A FrameLayout の目的は、物事を重ね合わせることです。 これはあなたが望むものではありません。

あなたの RelativeLayout の例では ListView の高さと幅を 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 を使うこともできますが、もしこの2つの項目だけなら LinearLayout の方がシンプルです。