2014-10-11 7 views
0

Я пытаюсь использовать Gridlayout. Я хочу, чтобы кнопки моей сетки заполняли экран, но у меня проблема с этим. Я замечаю, что сам макет заполняет экран, но его дети не заполняют макет. Это результат: http://i.imgur.com/TWNuTaj.png

Я много искал в Интернете, но большинство ответов предлагает заменить GridLayout на LinearLayout или RelativeLayout. Но я должен остаться с GridLayout. Также я не хочу указывать конкретные размеры кнопок, но остаюсь со структурой в связанной картинке.GridLayout не заполняет экран

Вот мой код:

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:layout_margin="0.5dp" 
android:columnCount="4" 
android:orientation="horizontal" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:rowCount="5" 
tools:context=".Level1" > 

<Button 
    android:layout_width="0dp" 
    android:layout_column="0" 
    android:layout_row="0" 
    android:text="0" /> 

<Button 
    android:id="@+id/b_1" 
    android:layout_column="1" 
    android:layout_gravity="fill_horizontal" 
    android:layout_row="0" 
    android:text="1" /> 

<Button 
    android:id="@+id/b_2" 
    android:layout_column="2" 
    android:layout_gravity="fill" 
    android:layout_row="0" 
    android:layout_rowSpan="3" 
    android:text="2" /> 

<Button 
    android:id="@+id/b_3" 
    android:layout_column="3" 
    android:layout_row="0" 
    android:text="3" /> 

<Button 
    android:layout_width="0dp" 
    android:layout_column="0" 
    android:layout_row="1" 
    android:text="0" /> 

<Button 
    android:id="@+id/b_4" 
    android:layout_column="1" 
    android:layout_gravity="fill_vertical" 
    android:layout_row="1" 
    android:layout_rowSpan="3" 
    android:text="4" /> 

<Button 
    android:id="@+id/b_6" 
    android:layout_column="3" 
    android:layout_gravity="fill_vertical" 
    android:layout_row="1" 
    android:layout_rowSpan="3" 
    android:text="6" /> 

<Button 
    android:layout_width="0dp" 
    android:layout_column="0" 
    android:layout_row="2" 
    android:text="0" /> 

<Button 
    android:id="@+id/b_5" 
    android:layout_column="2" 
    android:layout_row="3" 
    android:text="5" /> 

<Button 
    android:layout_width="0dp" 
    android:layout_column="0" 
    android:layout_row="3" 
    android:text="0" /> 

<Button 
    android:layout_height="0dp" 
    android:layout_column="0" 
    android:layout_columnSpan="4" 
    android:layout_row="4" 
    android:text="0" /> 

</GridLayout> 

ответ

1

Попробуйте этот путь, надеюсь, это поможет вам решить вашу проблему.

GridLayout: «GridLayout не обеспечивает поддержку принципа веса, как определен в весе В общем, это не поэтому возможно сконфигурировать GridLayout распределять лишнее пространство в нетривиальных пропорциях между несколькими строками или столбцами. ... Для полного контроля над распределением избыточного пространства в строке или столбце, используйте поднайм LinearLayout для хранения компонентов в связанной группе ячеек. "

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:orientation="vertical"> 
     <Button 
      android:layout_width="match_parent" 
      android:layout_weight="0.20" 
      android:layout_height="0dp" 
      android:text="1" /> 

     <Button 
      android:layout_width="match_parent" 
      android:layout_weight="0.80" 
      android:layout_height="0dp" 
      android:text="4" /> 

    </LinearLayout> 
    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:orientation="vertical"> 
     <Button 
      android:layout_width="match_parent" 
      android:layout_weight="0.80" 
      android:layout_height="0dp" 
      android:text="2" /> 

     <Button 
      android:layout_width="match_parent" 
      android:layout_weight="0.20" 
      android:layout_height="0dp" 
      android:text="5" /> 

    </LinearLayout> 
    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:orientation="vertical"> 
     <Button 
      android:layout_width="match_parent" 
      android:layout_weight="0.20" 
      android:layout_height="0dp" 
      android:text="3" /> 

     <Button 
      android:layout_width="match_parent" 
      android:layout_weight="0.80" 
      android:layout_height="0dp" 
      android:text="6" /> 
    </LinearLayout> 
</LinearLayout> 
+1

Прежде всего большое спасибо за ваши усилия , Я действительно ценю это. Но, к сожалению, как я сказал, мне нужно использовать GridLayout /: – user2983212

+0

Вопрос в том, как это сделать с помощью Grid ... – SSG

1

Основываясь на предыдущем ответе по @Haresh Chhelana, она работала как так просто делюсь мое решение:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/bg_1"> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:orientation="vertical"> 

     <!-- position 1 --> 
     <ImageView 
      android:layout_width="match_parent" 
      android:layout_weight="0.50" 
      android:layout_height="0dp" 
      android:src="@drawable/bt_elsa" /> 

     <!-- position 3 --> 
     <ImageView 
      android:layout_width="match_parent" 
      android:layout_weight="0.50" 
      android:layout_height="0dp" 
      android:src="@drawable/bt_daniel" /> 

    </LinearLayout> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:orientation="vertical"> 

     <!-- position 2 --> 
     <ImageView 
      android:layout_width="match_parent" 
      android:layout_weight="0.50" 
      android:layout_height="0dp" 
      android:src="@drawable/bt_anna" /> 

     <!-- position 4 --> 
     <ImageView 
      android:layout_width="match_parent" 
      android:layout_weight="0.50" 
      android:layout_height="0dp" 
      android:src="@drawable/bt_elmo" /> 

    </LinearLayout> 
</LinearLayout> 

sample Источник: https://github.com/eduardocerqueira/sing

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