Android TableLayout: охват 2 TextViews на 4 ячейки - PullRequest
1 голос
/ 06 января 2020

Android макет приложения. xml содержит 3 три строки. 1-й и 2-й ряды (каждый) состоят из 4 ячеек, 3-й ряд состоит из 2 ячеек (TextViews). Цель состоит в том, чтобы охватить 2 TextViews в 3-м ряду на всем ряду. Эти 2 TextViews имеют разную длину, поэтому layout_span (охватывающий каждый из 2 элементов в 2 ячейках) не дает желаемого эффекта. Некоторое улучшение достигается с помощью weight, но составной 3-й ряд оказывает некоторое влияние на 1-й и 2-й ряды.

Я решаю эту проблему, заключив 3-й ряд в внутренний TableLayout (вместо 3-го TableRow):

<TableLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/sunrizeLabel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:labelFor="@id/sunrizeValue"
            android:text="@string/sunrize_string" />

        <EditText
            android:id="@+id/sunrizeValue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:enabled="false"
            android:importantForAutofill="no"
            android:inputType="time"
            android:textIsSelectable="true" />

        <TextView
            android:id="@+id/middayLabel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:labelFor="@id/middayValue"
            android:paddingHorizontal="5dp"
            android:text="@string/midday" />

        <EditText
            android:id="@+id/middayValue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical|end"
            android:enabled="false"
            android:importantForAutofill="no"
            android:inputType="time"
            android:textIsSelectable="true" />
    </TableRow>


    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/sunsetLabel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:labelFor="@id/sunsetValue"
            android:text="@string/sunset_string" />

        <EditText
            android:id="@+id/sunsetValue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:enabled="false"
            android:importantForAutofill="no"
            android:inputType="time"
            android:textIsSelectable="true" />

        <TextView
            android:id="@+id/midnightLabel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:labelFor="@id/midnightValue"
            android:paddingHorizontal="5dp"
            android:text="@string/midnight" />

        <EditText
            android:id="@+id/midnightValue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical|end"
            android:enabled="false"
            android:importantForAutofill="no"
            android:inputType="time"
            android:textIsSelectable="true" />
    </TableRow>


    <TableLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

            <TextView
                android:id="@+id/daylightLabel"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"

                android:labelFor="@id/daylightValue"
                android:text="@string/daylight" />

            <EditText
                android:id="@+id/daylightValue"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"

                android:enabled="false"
                android:importantForAutofill="no"
                android:inputType="time"
                android:textIsSelectable="true" />
        </TableRow>
    </TableLayout>

</TableLayout>

Однако появляется некоторое неприятное сообщение: TableRow во внутреннем TableLayout считается бесполезным, и я Советую убрать на них. Логика c такого поведения понятна, но в этом случае необходимы и TableLayout, и его TableRow. Итак, вопрос: есть ли способ избежать этого сообщения, не подавляя?

...