Android может Android: гравитация это сделать? - PullRequest
1 голос
/ 21 июня 2011

Искал весь день и нашел плохое решение, я думаю.
Я хочу, чтобы три ImageButton были размещены на правой стороне экрана.
Не по центру, но чуть выше центральной позиции ..

С помощью приведенного ниже кода я получаю желаемый результат, но,
Если у пользователя большой экран, у него не будет этой позиции, верно?

Я пробовал android:gravity весь день, и все, что я могу сделатьс ним очень удобно центрировать три кнопки.

Что я должен использовать, чтобы эти три кнопки всегда оставались в тех положениях, которые они находятся на изображении любимого.У меня есть изображение кнопки 3 разных размеров в папке hdpi, mdpi, xhdpi.

      <RelativeLayout 
        android:id="@+id/rightRelativeLayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        >
            <ImageButton
                android:id="@+id/btn_A" 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="100dp"
                android:text="A"
                android:src="@drawable/drawer_1"
                android:background="@android:color/transparent"
                android:layout_alignParentRight="true"

            /> 
            <ImageButton
                android:id="@+id/btn_B" 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:text="B"
                android:src="@drawable/drawer_1"
                android:background="@android:color/transparent"
                android:layout_alignParentRight="true"
                android:layout_below="@+id/btn_A"
            />
            <ImageButton
                android:id="@+id/btn_C" 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:text="C"
                android:src="@drawable/drawer_1"
                android:background="@android:color/transparent"
                android:layout_alignParentRight="true"
                android:layout_below="@+id/btn_B"

            />
        </RelativeLayout>

Изображение трех кнопок, расположенных справа, и моя дочь, конечно.

Ответы [ 2 ]

1 голос
/ 21 июня 2011

Один из вариантов - поместить все три кнопки в LinearLayout (для простоты), а затем программно установить макет этого контейнера.

Вы можете увидеть размер экрана, используя getResources().getDisplayMetrics().heightPizelsустановите верхнее поле соответственно.

0 голосов
/ 21 июня 2011

Вы можете добавить LinearLayout внутри RelativeLayout, а затем использовать следующие свойства LinearLayout:

android:layout_alignParentRight="true"
android:layout_gravity="center_vertical"

РЕДАКТИРОВАТЬ: Хорошо, я провел некоторое тестирование и нашел способ делать то, что вы хотитебез использования стилей это программно, вот XML:

<RelativeLayout 
    android:id="@+id/rightRelativeLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginBottom="80dip"
    >
    <LinearLayout
        android:orientation="vertical"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true">
        <ImageButton
            android:id="@+id/btn_A" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="A"
            android:src="@drawable/icon"
            android:background="@android:color/transparent"

        /> 
        <ImageButton
            android:id="@+id/btn_B" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="B"
            android:src="@drawable/icon"
            android:background="@android:color/transparent"
        />
        <ImageButton
            android:id="@+id/btn_C" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="C"
            android:src="@drawable/icon"
            android:background="@android:color/transparent"

        />
        </LinearLayout>
    </RelativeLayout>
...