Весы Android TableLayout не точны - PullRequest
0 голосов
/ 14 марта 2011

В схеме ниже я ожидаю, что строки будут иметь точную высоту: первая строка 178px, а следующие две - 71px. Вместо этого я получаю два нижних с несколькими дополнительными пикселями. Что я делаю не так или таблица не так точна, как мне нравится?

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="480px"
    android:layout_height="320px"
    android:background="@drawable/screen"
    android:padding="0dp"
    android:layout_margin="0dp"
    android:stretchColumns="0"
    android:weightSum="320" >
    <TableRow android:layout_weight="178" android:padding="0dp" android:layout_margin="0dp">
        <TextView
          android:text=""
          android:gravity="center_horizontal"
          android:background="#99aa0000"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:padding="0dp"
           />
    </TableRow>
    <TableRow android:layout_weight="71" android:padding="0dp" android:layout_margin="0dp">
        <TextView
          android:text=""
          android:gravity="center_horizontal"
          android:background="#990000aa"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:padding="0dp"
          android:layout_margin="0dp" />

    </TableRow>
    <TableRow android:layout_weight="71" android:padding="0dp" android:layout_margin="0dp">
        <TextView
          android:text=""
          android:gravity="center_horizontal"
          android:background="#9900aa00"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:padding="0dp"
          android:layout_margin="0dp"
          />
    </TableRow>
</TableLayout>
</blink> 

Ответы [ 2 ]

0 голосов
/ 14 марта 2011

Layout_height для TableRows тоже не повлиял, кажется, что в 3.0 TableLayout работает, как и ожидалось, но более старые версии странные. Друг предложил мне попробовать аналогичный подход с LinearLayout, и он действительно сработал:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="480px"
    android:layout_height="320px"
    android:background="#99ff0101"
    android:padding="0dp"
    android:layout_margin="0dp"
    android:weightSum="320"
    android:orientation="vertical" >
        <TextView
          android:text=""
          android:background="#99aa0000"
          android:layout_width="fill_parent"
          android:layout_height="0px"
          android:padding="0dp"
          android:layout_weight="178"
           />
        <TextView
          android:text=""
          android:background="#990000aa"
          android:layout_width="fill_parent"
          android:layout_height="0px"
          android:padding="0dp"
          android:layout_margin="0dp"
          android:layout_weight="71"  />

        <TextView
          android:text=""
          android:background="#9900aa00"
          android:layout_width="fill_parent"
          android:layout_height="0px"
          android:padding="0dp"
          android:layout_margin="0dp"
          android:layout_weight="71" 
          />
</LinearLayout >

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

0 голосов
/ 14 марта 2011

Ваш вес используется для распределения дополнительного пространства, а не всего пространства.Попробуйте установить android:layout_height="0px" для каждого TableRow;это сделает дополнительное пространство 320 пикселей.Вы также можете исключить атрибуты android:layout_width и android:layout_height для представления в каждом TableRow (они переопределяются на TableRow).

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

...