Проблема с макетом Android - относительная ширина в процентах с использованием веса - PullRequest
13 голосов
/ 26 мая 2010

Я пытаюсь назначить относительную ширину столбцам в ListView, который находится в TabHost, используя layout_weight, как предлагается здесь :

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@android:id/tabhost"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <LinearLayout
     android:orientation="vertical"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent">
     <TabWidget android:id="@android:id/tabs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
        <FrameLayout android:id="@android:id/tabcontent"
           android:layout_width="fill_parent"
           android:layout_height="fill_parent">
           <TableLayout  
              android:id="@+id/triplist" 
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:paddingTop="4px">
              <TableRow>
                 <ListView android:id="@+id/triplistview"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"/>
              </TableRow>
              <TableRow>
                 <Button android:id="@+id/newtripbutton"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Add Trip"/>
              </TableRow>
[other tabs ...]

В моем определении строки есть 4 столбца, размер которых я хотел бы изменить следующим образом:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:orientation="horizontal"
   android:weightSum="1.0"
   android:padding="4px">   
   <TextView android:id="@+id/rowtripdate"
      android:layout_weight=".2"
      android:layout_width="0dip"
      android:layout_height="wrap_content"
      android:inputType="date"/>
   <TextView android:id="@+id/rowodostart"
      android:layout_weight=".2"
      android:layout_width="0dip"
      android:layout_height="wrap_content"/>
   <TextView android:id="@+id/rowodoend"
      android:layout_weight=".2"
      android:layout_width="0dip"
      android:layout_height="wrap_content"/>
   <TextView android:id="@+id/rowcomment"
      android:layout_weight=".4"
      android:layout_width="0dip"
      android:layout_height="wrap_content">

К сожалению, кажется, что требуется разместить все столбцы в пространстве, которое занимает кнопка, в отличие от ширины экрана. Или, может быть, есть другое ограничение, которое я не понимаю. Буду признателен за вашу помощь.

альтернативный текст http://heeroz.com/layoutprob.png

Ответы [ 2 ]

11 голосов
/ 27 мая 2010

Я думаю, что забыл это свойство для элемента TableLayout:

android:stretchColumns="0"

Кажется, сейчас работает.

1 голос
/ 26 мая 2010

Я не вижу ничего явно неправильного в том, что вы там показываете. Чтобы лучше понять происходящее, вы можете попробовать heirarchy viewer . Поставляется с SDK. Он визуализирует для вас, сколько места занимает каждый из «скрытых» слоев, так что вы можете определить, какой из них решил быть таким большим.

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