Как расширить ряды?

Я пытаюсь использовать GridLayout, и у меня возникают проблемы с расширением строк (с помощью TextViews), чтобы «заполнить» пространство в макете.

Вертикальное изображение (обратите внимание, что строки должны расширяться красной линией): введите здесь описание изображения

Горизонтальное изображение:
введите здесь описание изображения

main.xml:

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:columnCount="2"
  android:useDefaultMargins="true" >
<TextView
    style="@android:style/TextAppearance.Large"
    android:layout_columnSpan="2"
    android:layout_gravity="center_horizontal"
    android:padding="8dp"
    android:text="Which means: lacking in originality as to be obvious and boring." />
<Space android:layout_height="24dp" android:layout_columnSpan="2" />
<TextView style="@style/AnswerLetter" android:text="A." />
<TextView style="@style/AnswerChoice" android:text="ascetic" />
<TextView style="@style/AnswerLetter" android:text="B." />
<TextView style="@style/AnswerChoice" android:text="banal" />
<TextView style="@style/AnswerLetter" android:text="C." />
<TextView style="@style/AnswerChoice" android:text="contraption" />
<TextView style="@style/AnswerLetter" android:text="D." />
<TextView style="@style/AnswerChoice" android:text="dominion" />
<TextView style="@style/AnswerLetter" android:text="E." />
<TextView style="@style/AnswerChoice" android:text="enervation" />
</GridLayout>

styles.xml:

 <style name="AnswerLetter" parent="@android:style/TextAppearance.Medium">
   <item name="android:layout_gravity">right</item>
   <item name="android:paddingLeft">32dp</item>
   <item name="android:textStyle">bold</item>
   <item name="android:gravity">center_vertical|center_horizontal</item>
 </style>
 <style name="AnswerChoice" parent="@android:style/TextAppearance.Large">
   <item name="android:layout_gravity">left</item>
   <item name="android:paddingLeft">32dp</item>
   <item name="android:gravity">left</item>
 </style>

person AG1    schedule 21.12.2012    source источник
comment
Пожалуйста, используйте edit, чтобы добавить этот код к вашему вопросу.   -  person Sam    schedule 21.12.2012
comment
вы хотите расширить всю таблицу до красной строки или текст в таблице до красной строки?   -  person Jainendra    schedule 26.12.2012
comment
Я хочу расширить только TextViews со стилями AnswerLetter, AnswerChoice, чтобы заполнить всю красную строку.   -  person AG1    schedule 26.12.2012


Ответы (2)


Вы хотите, чтобы все ваши дочерние подвиды росли (в высоту), чтобы заполнить это дополнительное пространство, но это невозможно внутри GridLayout:

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

Попробуйте добавить линейный макет в качестве подпредставления и установить для атрибутов веса всех дочерних элементов одинаковое значение (чтобы они расширялись одинаково).

Аналогичный вопрос: GridLayout (не GridView), как равномерно растянуть всех детей

person Victor    schedule 26.12.2012

Если я вас правильно понял - этот макет может решить вашу проблему. GridView не может увеличивать высоту столбца, поэтому вы можете использовать LinearLayout. Я делаю этот макет для вас, возможно, он нуждается в некоторых корректировках.

horisontalвертикальный

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:id="@+id/LinearLayout1"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        style="@android:style/TextAppearance.Large"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:padding="8dp"
        android:text="Which means: lacking in originality as to be obvious and boring." />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:gravity="center_vertical"
        android:layout_height="wrap_content">
        <TextView
            style="@style/AnswerLetter"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center_vertical"
            android:text="A." />
        <TextView
            style="@style/AnswerChoice"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center_vertical"
            android:text="ascetic" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:gravity="center_vertical"
        android:layout_weight="1"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center_vertical"
            style="@style/AnswerLetter"
            android:text="B." />
        <TextView
            style="@style/AnswerChoice"
            android:layout_width="match_parent"
            android:gravity="center_vertical"
            android:layout_height="match_parent"
            android:text="banal" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:gravity="center_vertical"
        android:layout_weight="1"
        android:layout_height="wrap_content">
        <TextView
            style="@style/AnswerLetter"
            android:layout_width="wrap_content"
            android:gravity="center_vertical"
            android:layout_height="match_parent"
            android:text="C." />
        <TextView
            style="@style/AnswerChoice"
            android:layout_width="match_parent"
            android:gravity="center_vertical"
            android:layout_height="match_parent"
            android:text="contraption" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:gravity="center_vertical"
        android:layout_weight="1"
        android:layout_height="wrap_content">
        <TextView
            style="@style/AnswerLetter"
            android:layout_width="wrap_content"
            android:gravity="center_vertical"
            android:layout_height="match_parent"
            android:text="D." />
        <TextView
            style="@style/AnswerChoice"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center_vertical"
            android:text="dominion" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:gravity="center_vertical"
        android:layout_weight="1"
        android:layout_height="wrap_content">
        <TextView
            style="@style/AnswerLetter"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center_vertical"
            android:text="E." />
        <TextView
            style="@style/AnswerChoice"
            android:layout_width="match_parent"
            android:gravity="center_vertical"
            android:layout_height="match_parent"
            android:text="enervation" />
    </LinearLayout>
</LinearLayout>
person Berezovskyi    schedule 31.12.2012