Кнопка на половину ширины экрана - PullRequest
39 голосов
/ 27 февраля 2012

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

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:gravity="center_horizontal"
    android:padding="6dp">

    <Button
        android:id="@+id/buttonCollect"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="@string/hello"
        android:paddingLeft="8dp"
        android:paddingRight="8dp"/>

</LinearLayout> 

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

Ответы [ 4 ]

77 голосов
/ 27 февраля 2012

Да, решение очень похоже на этот вопрос, но вы также хотите установить weightSum родительского LinearLayout:

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:gravity="center_horizontal"
    android:padding="6dp"
    android:weightSum="2">

    <Button
        android:id="@+id/buttonCollect"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:text="@string/hello"
        android:paddingLeft="8dp"
        android:paddingRight="8dp"
        android:layout_weight="1" />

</LinearLayout> 
3 голосов
/ 27 февраля 2012

Вам нужно установить 0,5 (половину) веса и установить ширину на 0.

<Button
    android:id="@+id/buttonCollect"
    android:layout_width="0dip"
    android:layout_weight="0.5"
    android:layout_height="match_parent"
    android:text="@string/hello"
    android:paddingLeft="8dp"
    android:paddingRight="8dp"/>
1 голос
/ 25 ноября 2014

Ни одно из этих решений не работало для меня на Android L. Мне пришлось сделать wrap_content, как показано ниже:

<Button
    android:layout_gravity="center"
    android:id="@+id/btnSignin"
    android:layout_width="wrap_content"
    android:paddingLeft="20dp"
    android:paddingRight="20dp"
    android:layout_height="wrap_content"
    android:text="@string/btn_signin"
    android:layout_marginBottom="@dimen/activity_vertical_margin" />
0 голосов
/ 27 февраля 2012

Точно так же, как вопрос, который вы разместили, просто используйте вместо него фиктивное представление:

<View 
android:weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...