私はシンプルな響板アプリに取り組んできました。基本的なデザインはタイトルの画像ビューで、その後に 4 行のボタン (各行に 3 つ) が続き、古い携帯電話のボタンのように見えます。下部には「ランダム」と「停止」ボタンがあります。上記の行よりも高さのスペースがわずかに少なくなりますが、ランダム ボタンはスペースを埋めるために幅を 2 倍にしました。
この外観を実現するために、ネストされたウェイトと線形レイアウトを使用してきました。ただし、さらに調査したところ、現在の形式では各項目が 8 回測定されているため、これはパフォーマンスに悪いことがわかりました。私のXMLレイアウトコードは以下です。コードを小さくするために、ボタンの余白、テキスト、影などの多くの UI 修飾子を除外しました。コードは長く見えるかもしれませんが、反復的で理解しやすいコードです。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="23" >
<!-- Insert Title/Picture in Linear Layout below -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="9"
android:background="@drawable/etho_logo"
android:orientation="horizontal" >
</LinearLayout>
<!-- Insert Sounds/Buttons in Linear Layout below -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="5"
android:orientation="vertical"
android:weightSum="4" >
<!-- This is the 1st line of buttons -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal"
android:weightSum="3" >
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
</LinearLayout>
<!-- This is the 2nd line of buttons -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal"
android:weightSum="3" >
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
</LinearLayout>
<!-- This is the 3rd line of buttons -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal"
android:weightSum="3" >
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
</LinearLayout>
<!-- This is the 4th line of buttons -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal"
android:weightSum="3" >
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
</LinearLayout>
</LinearLayout>
<!-- Random Button and Stop button below here -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="9"
android:orientation="horizontal"
android:weightSum="3" >
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
</LinearLayout>
</LinearLayout>
私は Android を初めて使用するので、相対レイアウトを使用してみましたが、非常に苦労しました。チュートリアルをオンラインで見ようとしましたが、コードで使用しても正しく見えませんでした。
たとえば、私のタイトル画像には、表示したい実際のテキストの上下に余分なスペースがあります。重みのある線形レイアウトでは、指定したスペースに合わせて自動的に小さくなります。ただし、RelativeLayout にはありません。
私がここで尋ねようとしているのは次のようなことだと思います: RelativeLayout アイテムが数行にわたって均等に配置されたボタンになるようにするにはどうすればよいですか (上記の例に示すように)、ImageViews やその他のものを実際に自動的に作成するにはどうすればよいですか?私がそれらに与えるスペースにサイズダウン?さらに情報が必要な場合は、お気軽にお問い合わせください。