2012-02-27 3 views
39

У меня есть одна кнопка в линейной компоновке. Я хочу, чтобы кнопка занимала половину ширины своего родителя. Есть ли способ сделать это в макете 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> 

Мой вопрос очень похоже на этом Assign width to half available screen width declaratively кроме меня только одну кнопки.

+0

возможно дубликат [ширина Присвоить половину доступной ширины экрана декларативно] (http://stackoverflow.com/questions/ 2581481/assign-width-to-half-available-screen-width-декларативно) – Saif

ответ

75

Да, решение очень похоже на этот вопрос, но вы также хотите установить 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> 
+2

О, и да, если вы действительно хотите ровно половину, начиная с ширины 0dp, как упоминалось выше, обычно хорошая идея. – kabuko

+0

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

3

Вам нужно установить 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"/> 
+0

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

+1

@PrashanthDebbadwar Задайте новый вопрос, поставьте свой собственный xml. Написание комментария по 3-летнему ответу не принесет плода. – Knossos

0

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

<View 
android:weight="1" 
android:layout_width="0dp" 
android:layout_height="match_parent"/> 
1

Ни одно из этих решений не работал для меня на 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" />