Кнопки с layout_weight = "1" занимают все пространство в LinearLayout - PullRequest
0 голосов
/ 26 мая 2011

Я хочу поместить 4 кнопки горизонтально в линейное расположение.Чтобы расположить их одинаково, я установил android:layout_weight="1" в каждой кнопке.Проблема в том, что ширина кнопки не соблюдается и они заполняют весь линейный макет.Это работает с изображениями, почему бы не с кнопками?

Спасибо

enter image description here

<LinearLayout android:orientation="horizontal"
    android:layout_width="fill_parent" android:layout_height="50dp" android:background="#FFFFFF">
    <Button android:id="@+id/btn_sort_pert"
        android:layout_width="90dp" android:layout_height="31dp"
        android:layout_gravity="center_vertical" android:gravity="center"
        android:layout_weight="1" android:text="@string/pertinence"
        android:textSize="14sp" android:textColor="#FFFFFF"
        android:background="@drawable/btn_sort" />
    <Button android:id="@+id/btn_sort_dist"
        android:layout_width="90dp" android:layout_height="31dp"
        android:layout_gravity="center_vertical" android:gravity="center"
        android:layout_weight="1" android:text="@string/distance"
        android:textSize="14sp" android:textColor="#FFFFFF"
        android:background="@drawable/btn_sort" />
    <Button android:id="@+id/btn_sort_prix"
        android:layout_width="90dp" android:layout_height="31dp"
        android:layout_gravity="center_vertical" android:gravity="center"
        android:layout_weight="1" android:text="@string/prix"
        android:textSize="14sp" android:textColor="#FFFFFF"
        android:background="@drawable/btn_sort" />
    <Button android:id="@+id/btn_refine"
        android:layout_width="32dp" android:layout_height="31dp"
        android:layout_gravity="center_vertical" android:layout_weight="1" android:background="@drawable/btn_affiner" />
</LinearLayout>

Ответы [ 2 ]

2 голосов
/ 26 мая 2011

С этими настройками ImageView ведет себя как Button, но вы этого не видите, вероятно, потому что по умолчанию изображения будут центрированы, если они не заполняют вид по ширине. Это как кадр, вы увидите это с HierarchyViewer (инструмент SDK для отладки макетов).

Если я получу то, что вы хотите, чтобы сделать то же самое с кнопками, вам придется заключить каждую кнопку в макет, чтобы вмещающие макеты равномерно распределяли пространство, а кнопки могли оставаться в центре тяжести в этих макетах каждая со своей шириной, имеющая своего рода гибкий «край» по бокам. (не проверено, но должно работать!)

2 голосов
/ 26 мая 2011

РЕДАКТИРОВАТЬ

Вам необходимо добавить пустые представления, такие как:

<LinearLayout android:orientation="horizontal"
    android:layout_width="fill_parent" android:layout_height="50dp" android:background="#FFFFFF">
    <Button android:id="@+id/btn_sort_pert"
        android:layout_width="90dp" android:layout_height="31dp"
        android:layout_gravity="center_vertical" android:gravity="center"
         android:text="@string/pertinence"
        android:textSize="14sp" android:textColor="#FFFFFF"
        android:background="@drawable/btn_sort" />
       <View android:layout_width="0dp" android:layout_height="1dp" 
       android:layout_weight="1">
    <Button android:id="@+id/btn_sort_dist"
        android:layout_width="90dp" android:layout_height="31dp"
        android:layout_gravity="center_vertical" android:gravity="center"
         android:text="@string/distance"
        android:textSize="14sp" android:textColor="#FFFFFF"
        android:background="@drawable/btn_sort" />
     <View android:layout_width="0dp" android:layout_height="1dp" 
      android:layout_weight="1">
    <Button android:id="@+id/btn_sort_prix"
        android:layout_width="90dp" android:layout_height="31dp"
        android:layout_gravity="center_vertical" android:gravity="center"
        android:text="@string/prix"
        android:textSize="14sp" android:textColor="#FFFFFF"
        android:background="@drawable/btn_sort" />
     <View android:layout_width="0dp" android:layout_height="1dp" 
     android:layout_weight="1">
    <Button android:id="@+id/btn_refine"
        android:layout_width="32dp" android:layout_height="31dp"
        android:layout_gravity="center_vertical" android:background="@drawable/btn_affiner" />
</LinearLayout>
...