Android TableLayout, выраженный в процентах от LinearLayout - PullRequest
3 голосов
/ 02 марта 2012

Я пытаюсь разместить TableLayout как единственный элемент внутри LinearLayout (у него есть фоновая иконка, я хочу покрыть весь экран), и я хочу центрировать его и сказать, использовать 60% ширины и 70%высота например.У меня есть это, и это выглядит хорошо, но я не уверен, что это будет работать на многих устройствах, и мне интересно, каков самый лучший, самый общий способ выразить это.

<LinearLayout
    android:id="@+id/mainLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="@drawable/mylogo"
    android:padding="0dip"
    android:gravity="center_vertical|center_horizontal"
    android:baselineAligned="false"
    >

    <TableLayout
        android:background="#FFFF0000"
        android:layout_width="200dp"
        android:layout_height="250dp"
        android:gravity="center_vertical|center_horizontal"
        android:stretchColumns="field">

    </TableLayout>

</LinearLayout>

Я возился с layout_Weights, но единственное, что мне удалось сделать, это заставить таблицу исчезнуть.

Спасибо, Стивен

Ответы [ 3 ]

1 голос
/ 02 марта 2012

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

<LinearLayout
    android:id="@+id/mainLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="@drawable/mylogo"
    android:gravity="center"
    android:weightSum="1.0">
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:orientation="horizontal"
        android:gravity="center"
        android:weightSum="1.0"
        android:layout_weight="0.7">

        <TableLayout
            android:background="#FFFF0000"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:gravity="center"
            android:stretchColumns="field"
            android:layout_weight="0.6">

        </TableLayout>

    </LinearLayout>
</LinearLayout>

Будет ли этот макет хорошо выглядеть на разных устройствах, зависит от вашего контента. В целом я склоняюсь к разумным отступам / полям, но, опять же, это очень зависит от содержания.

0 голосов
/ 02 марта 2012

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

Использование layout_weight поможет только в том случае, если в LinearLayout.

имеется более одного ребенка.
0 голосов
/ 02 марта 2012

Попробуйте использовать RelativeLayout вместо LinearLayout, потому что если в линейном элементе только один дочерний элемент, он будет занимать все пространство своего родителя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...