Как приблизить правые ячейки к левым ячейкам в TableLayout? - PullRequest
0 голосов
/ 29 мая 2020

У меня есть следующий код:

    <TableLayout
        android:id="@+id/table"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:shrinkColumns="*"
        android:stretchColumns="*"
        android:layout_marginTop="15dp">

        <TableRow
            android:id="@+id/table_row1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <TextView
                android:id="@+id/text_project1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="text"/>

            <Spinner
                android:id="@+id/spinner_project2"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:drawSelectorOnTop="true" />
        </TableRow>


        <TableRow
            android:id="@+id/table_row2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <TextView
                android:id="@+id/text_project2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Very long test"/>

            <Spinner
                android:id="@+id/spinner_project2"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:drawSelectorOnTop="true" />
        </TableRow>
    </TableLayout

Он в основном создает следующую таблицу:

text                         [spinner]
very long text               [spinner]

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

text            [spinner]  <Nothing here>
very long text  [spinner]  <Nothing here>

Я пытался использовать marginLeft, но это не помогло. Я также пробовал использовать weights=3 со вставкой пустого текстового представления. Это выглядит лучше, но тогда я получаю пустое текстовое представление в середине кода. Я уверен, что есть способ это сделать. Как мне это сделать?

1 Ответ

0 голосов
/ 29 мая 2020

Используйте android:shrinkColumns="1" для TableLayout, который вы сейчас используете *, и удалите android:stretchColumns="*"

<TableLayout
        android:id="@+id/table"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:shrinkColumns="1"
        android:layout_margin="15dp"
        >

        <TableRow
            android:id="@+id/table_row1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

            <TextView
                android:id="@+id/text_project1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="text"/>

            <Spinner
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:drawSelectorOnTop="true" />

        </TableRow>


        <TableRow
            android:id="@+id/table_row2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <TextView
                android:id="@+id/text_project2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Very long test"/>

            <Spinner
                android:id="@+id/spinner_2"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:drawSelectorOnTop="true" />

        </TableRow>
    </TableLayout>

Примечание. Индексирование начинается с 0, т.е. если вы хотите сжать / растянуть 1-й столбец, вы нужно использовать 0, а не 1

...