Макет 4 кнопки в Android

Я довольно новичок в Android-разработке. В настоящее время я работаю над приложением, где мне нужно расположить 4 кнопки на экране. Кнопка 1 + 2 должна быть в первом ряду и 3 + 4 во втором ряду. Я хочу, чтобы каждая кнопка была одинаковой высоты и ширины. И поскольку существует несколько размеров экрана, я хочу, чтобы ширина кнопок составляла 40% ширины экрана. Можно ли сделать что-то подобное, просто используя макет, или мне нужно вычислить все в коде?

Примечание. Я хочу развернуть приложение на устройствах под управлением Android 2.2 или выше.

Вот пример графика.

РЕДАКТИРОВАТЬ: Для всех, кто ищет квадратные вещи.. Вот решение: http://android-layouts.com/category/tags/square

3 ответа

Решение

Попробуй это

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >


    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

    <Button
        android:id="@+id/button1"
        android:layout_width="0px"
        android:layout_height="wrap_content"
        android:layout_weight="0.4"
        android:text="Button" />

    <Button
        android:id="@+id/button2"
        android:layout_width="0px"
        android:layout_height="wrap_content"
        android:layout_weight="0.6"
        android:text="Button" />

    </LinearLayout>


    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

    <Button
        android:id="@+id/button3"
        android:layout_width="0px"
        android:layout_height="wrap_content"
        android:layout_weight="0.4"
        android:text="Button" />

    <Button
        android:id="@+id/button4"
        android:layout_width="0px"
        android:layout_height="wrap_content"
        android:layout_weight="0.6"
        android:text="Button" />

    </LinearLayout>



</LinearLayout>

введите описание изображения здесь

поэтому для решения этой проблемы вы должны использовать android:layout_weight="40/100"="0.4"
и перед этим вы должны установить android:layout_width 0 . потому что без него android:layout_weight="40/100"="0.4" не работает
для более подробной информации о `` Android:layout_weight` go
Что означает Android: layout_weight?

UPDATE 1

для выполнения этой задачи для высоты кнопки попробуйте ниже кода

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


    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="0px"
        android:layout_weight="0.6"
        android:orientation="horizontal" >

    <Button
        android:id="@+id/button1"
        android:layout_width="0px"
        android:layout_height="fill_parent"
        android:layout_weight="0.4"
        android:text="Button" />

    <Button
        android:id="@+id/button2"
        android:layout_width="0px"
        android:layout_height="fill_parent"
        android:layout_weight="0.6"
        android:text="Button" />

    </LinearLayout>


    <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="0px"
        android:layout_weight="0.4"
        android:orientation="horizontal" >

    <Button
        android:id="@+id/button3"
        android:layout_width="0px"
        android:layout_height="fill_parent"
        android:layout_weight="0.4"
        android:text="Button" />

    <Button
        android:id="@+id/button4"
        android:layout_width="0px"
        android:layout_height="fill_parent"
        android:layout_weight="0.6"
        android:text="Button" />

    </LinearLayout>



</LinearLayout>

Как указал Romain Guy в этом ответе:

Вы не можете использовать проценты для определения размеров представления внутри RelativeLayout. Лучший способ сделать это - использовать LinearLayout и веса или пользовательский макет.

Так что вы ищете LinearLayout и android:layout_weight приписывать.

Следующий код создаст макет из вашего скриншота:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp" >

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

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="1" />

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="2" />
    </LinearLayout>

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

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="3" />

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="4" />
    </LinearLayout>

</LinearLayout>

И результат:

введите описание изображения здесь

Я бы начал размещать первые две кнопки внутри горизонтального LinearLayout, а вторые 2 - в другом горизонтальном LinearLayout. Затем добавьте отступы к кнопкам, чтобы разделить их. Что касается 40%, может быть, вы можете играть с атрибутом веса XML.

Другие вопросы по тегам