0

私はこのようなことを達成しようとしています:

ここに画像の説明を入力してください

これまでの私のコードは:

   <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <Button
            android:id="@+id/btemail"
            android:layout_width="130dp"
            android:layout_height="130dp"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_marginBottom="45dp"
            android:layout_marginLeft="34dp"
            android:drawableTop="@drawable/mail"
            android:text="E-mail"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <Button
            android:id="@+id/btcharts"
            android:layout_width="130dp"
            android:layout_height="130dp"
            android:layout_above="@+id/btemail"
            android:layout_alignLeft="@+id/btemail"
            android:background="@android:color/transparent"
            android:drawableTop="@drawable/chart"
            android:drawablePadding="-35dp"
            android:text="Charts"
            android:textAppearance="?android:attr/textAppearanceSmall"  />

        <Button
            android:id="@+id/bthistory"
            android:layout_width="130dp"
            android:layout_height="130dp"
            android:layout_alignBaseline="@+id/btemail"
            android:layout_alignBottom="@+id/btemail"
            android:layout_toRightOf="@+id/btemail"
            android:drawableTop="@drawable/list"
            android:text="History"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <Button
            android:id="@+id/btimport"
            android:layout_width="130dp"
            android:layout_height="130dp"
            android:layout_alignLeft="@+id/bthistory"
            android:layout_alignTop="@+id/btcharts"
            android:drawableTop="@drawable/add"
            android:text="New Measurement"
            android:textAppearance="?android:attr/textAppearanceSmall" />

    </RelativeLayout>

私の見解はこれです:

ここに画像の説明を入力してください

これは相対ビューのみで実行できますか、それともグリッドビューを使用する必要がありますか?

android:layout_height = "130dp"を設定したが、異なる画面 "50x50 66x66 98x98 130x130"のアイコンのサイズが異なる場合。異なる画面で問題が発生しますか?それを動的に達成する方法はありますか?

アイコンの中央をチャートボタンの垂直方向と水平方向に配置するにはどうすればよいですか????今では中央より少し上になっているためです。

4

2 に答える 2

2

RelativeLayoutテキストと背景に使用することをお勧めします。ボタンは、親にネストされる、TableLayoutまたは(適切なマージンを使用して)配置されます- 。GridLayoutRelativeLayout

于 2013-02-18T18:43:26.563 に答える
1

dpまたはdipメトリックは、密度160またはmdpiのピクセル数であるため、レイアウトフォルダーのサイズをmdpiのピクセルとして設定し、他のサイズを次の表のようにスケーリングします。

  • xhdpi:2.0
  • hdpi:1.5
  • mdpi:1.0(ベースライン)
  • ldpi:0.75

詳細については、これこれを参照してください

編集:このレイアウトを行うための最良の方法は、すべてのボタンを線形レイアウトにし、ルートとして相対レイアウトを持ち、重力などによって線形レイアウトの位置合わせを行うことだと思います。

私の例:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="42dp"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/btcharts"
            android:layout_width="130dp"
            android:layout_height="130dp"
            android:drawablePadding="-35dp"
            android:drawableTop="@drawable/chart"
            android:text="Charts"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <Button
            android:id="@+id/btimport"
            android:layout_width="130dp"
            android:layout_height="130dp"
            android:drawableTop="@drawable/add"
            android:text="New Measurement"
            android:textAppearance="?android:attr/textAppearanceSmall" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp" >

        <Button
            android:id="@+id/btemail"
            android:layout_width="130dp"
            android:layout_height="130dp"
            android:drawableTop="@drawable/mail"
            android:text="E-mail"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <Button
            android:id="@+id/bthistory"
            android:layout_width="130dp"
            android:layout_height="130dp"
            android:drawableTop="@drawable/list"
            android:text="History"
            android:textAppearance="?android:attr/textAppearanceSmall" />
    </LinearLayout>
</LinearLayout>

ここにドローアブルがないので、すべてが揃っているかどうかはわかりませんが、これから改善できると思います。また、背景が透明であるため、「チャート」ボタンも異なります。

于 2013-02-18T19:13:30.383 に答える