Отцентрируйте кнопку идеально на экране - PullRequest
1 голос
/ 19 декабря 2011

Я искал в Интернете, и у большинства людей был ответ, касающийся масштабирования, но я не могу найти этот вариант.Это xml.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" android:layout_gravity="center">

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" android:layout_gravity="center" android:layout_weight="1"/>

</LinearLayout>

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

Спасибо

1 Ответ

2 голосов
/ 19 декабря 2011

Используйте RelativeLayout вместо LinearLayout:

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button"
        android:layout_centerInParent="true"/>
</RelativeLayout>

Альтернативный подход заключается в использовании двух вложенных LinearLayout, одного горизонтального и одного вертикального.Например:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

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

        <Button
            android:id="@+id/button1"
            android:text="Button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"/>

    </LinearLayout>
</LinearLayout>

Причина для этого заключается в том, что горизонтальный LinearLayout обращает внимание только на вертикальные значения layout_gravity, а вертикальный LinearLayout обращает внимание только на горизонтальные layout_gravity значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...