2014-08-20 3 views
1

Я использую Linear Layout с 6 кнопками в нем.
На основании разрешений кнопки установлены видимыми или невидимыми.Как заполнить пространство с помощью линейного макета

Button1 Button2 Button3 Button4 Button5 Button6

на основе прав доступа пользователей

Button1

Button3 Button4

Button6

Мой вопрос: есть ли способ, чтобы сделать дисплей как

Button1 Button3 Button4 Button6

Может Android XML для макетов управлять этим, и если да, то каким образом?

+0

Почему этот вопрос был отклонен. Если это имеет смысл для пользователей и других помощников, это не должно быть отклонено. –

ответ

0

Чтобы достичь своей идти аль:

- Установите ширину LinearLayout в match_parent и его ориентацию по горизонтали:

android:layout_width="match_parent" 
android:orientation="horizontal" 

Это сделает ваши кнопки лежат на строке.

- Установить все веса кнопки 1 и их ширины, чтобы 0dp:

android:layout_weight="1" 
android:layout_width="0dp" 

Это сделает ваши кнопки заполнить пространство по горизонтали, в процентах (каждый из них будет иметь такой же ширины)

- Если вы программно установить видимость View.GONE, невидимые кнопки не будут принимать нет места, оставив остальных кнопок больше места для заполнения (они будут automaticall y растут в размере). Установив видимость на View.VISIBLE, снова появится видимая кнопка, и ширина Buttonn будет сужаться.

+0

Это работало как шарм, поскольку я очень новичок в stackOverflow, я не могу проголосовать без 15 репутации. 3-й пункт мне очень помог. Я по-прежнему использую компоновку в качестве вертикальной, но с высотой 0dp. Спасибо Фрэнку. –

+0

Рад, что это вам помогло. ;) –

1

Вы просто установить горизонтальной ориентации в LinearLayout

android:orientation="horizontal" 
0

Вы можете сделать это с помощью Layout Weight из LinearLayout http://developer.android.com/guide/topics/ui/layout/linear.html#Weight

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

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
         LayoutParams.MATCH_PARENT, 
         LayoutParams.MATCH_PARENT, 0.5f); 


    button.setLayoutParams(params); 
+0

не может использовать это как минимальный уровень API для моего проекта 8, тогда как Layout.Params требует API уровня 11. Спасибо за ваше предложение. –

+0

LinearLayout.LayoutParams с уровня API 1 ... может быть, проблема в LayoutParams.MATCH_PARENT ... измените это: LayoutParams.FILL_PARENT, он должен работать одинаково. –

+0

Фактически MATCH_PARENT должен быть доступен на уровне API 8: http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html#MATCH_PARENT –

1

Вот ваш макет Пожалуйста, проверьте.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:weightSum="6" > 

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

    <Button 
     android:id="@+id/btn2" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="Button 2" 
     android:visibility="gone" /> 

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

    <Button 
     android:id="@+id/btn4" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="Button 4" /> 

    <Button 
     android:id="@+id/btn5" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="Button 5" 
     android:visibility="gone" /> 

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

</LinearLayout> 
+0

, хотя это объяснение аналогично следующему ответу Фрэнка с той лишь разницей, что это часть View.GONE. –

Смежные вопросы