Настройка макета в приложении Android, есть вопросы по расположению кнопок - PullRequest
0 голосов
/ 24 февраля 2011

Как видно из заголовка, я работаю над приложением Android с Layout View и двумя рядами кнопок для выполнения различных задач.Один ряд кнопок находится сверху, а другой - снизу, и мне нравится, как это выглядит.

Теперь о неудачной части: я использовал пару инструментов, которые вы просто не должны использовать большедля этого: AbsoluteLayout и расположение кнопок (и размеры) в пикселях, а не в dp или sp.

Дело в том, что даже если бы я использовал более продвинутые инструменты макета, я понятия не имею, как бы я это сделал 'Мы разместили набор кнопок в нижней части экрана.И это только для одного размера экрана, намного меньше 2-го (это то, что у меня сейчас ...)

Теперь, это никогда не будет общедоступным приложением, поэтому яменя не очень беспокоит универсальная совместимость, но есть ли у кого-нибудь предложения по простому XML-описанию макета одной строки из 5 кнопок в верхней и нижней части экрана (что исправлено в ландшафтном режиме) ???

Кроме того, кто-нибудь знает, возможно ли найти виджеты макета во время выполнения?Очень просто изменить их размер , но не менять их расположение, насколько я могу судить?

Спасибо,
R.

Ответы [ 4 ]

0 голосов
/ 24 февраля 2011
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <LinearLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="top">
        <Button android:text="Button" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"></Button>
        <Button android:text="Button" android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"></Button>
        <Button android:text="Button" android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"></Button>
        <Button android:text="Button" android:id="@+id/button5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"></Button>
        <Button android:id="@+id/button4" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Button" android:layout_weight="1"></Button>
    </LinearLayout>
<LinearLayout android:id="@+id/linearLayout2" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="bottom" android:layout_gravity="bottom" android:layout_weight="1">
<Button android:text="Button" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="bottom"></Button>
        <Button android:text="Button" android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"></Button>
        <Button android:text="Button" android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"></Button>
        <Button android:text="Button" android:id="@+id/button5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"></Button>
        <Button android:id="@+id/button4" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Button" android:layout_weight="1"></Button>
</LinearLayout>
</LinearLayout>
0 голосов
/ 24 февраля 2011

Есть несколько способов выполнить то, о чем вы говорите, но я бы, вероятно, использовал RelativeLayout .Хорошее объяснение того, как вы можете использовать их в блоге Ромена Гая .Короче говоря, для каждого набора кнопок будет установлено layout_alignParentTop="true", а для других layout_alignParentBottom будет установлено значение true - проблема решена.Вы также можете установить android:id s на кнопки, чтобы вы могли расположить их слева / справа друг от друга с помощью android:layout_toLeftOf / android:layout_toRightOf, или вы можете прикрепить каждый набор кнопок в LinearLayout с помощью android:orientation="horizontal".

Что касается перемещения элементов во время выполнения, вы определенно можете это сделать - но вы должны сделать это с помощью элемента LayoutParams (либо создать новый объект LayoutParams соответствующего типа и назначить его дляView или путем вызова getLayoutParams() и изменения возвращаемого объекта).Для детей RelativeLayout см. RelativeLayout.LayoutParams.

0 голосов
/ 24 февраля 2011

Да, это легко сделать с помощью FrameLayout и layout_gravity.


<FrameLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/>
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>
          ...
    </LinearLayout>
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>
          ...
    </LinearLayout>
</FrameLayout>

Сэндвич-представление между двумя панелями кнопок может потребовать изменения FrameLayout на LinearLayout и установки layout_weight на центральном виде на 1, при этом не указывается вес панелей кнопок.

0 голосов
/ 24 февраля 2011

Нет хорошего короткого ответа на ваш вопрос. Лучше всего было бы прочитать учебник, который объясняет и показывает, что происходит. Я думал, что этот был отличной отправной точкой для меня.

...