Вопрос Android TableLayout: получить правую колонку фиксированной ширины? - PullRequest
2 голосов
/ 28 февраля 2010

( Отредактировано: я на шаг дальше, чем раньше )

Я пытался заставить простой TableLayout с двумя столбцами, где у меня есть LinearLayout в левом столбце, в который я динамически добавляю элементы, которые заполняют горизонтальное пространство, за исключением фиксированного правого столбца 100px.

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

 <ScrollView android:layout_width="fill_parent"
             android:layout_height="fill_parent"
             xmlns:android="http://schemas.android.com/apk/res/android"
             android:id="@layout/main">
  <TableLayout android:layout_width="fill_parent"
               android:layout_height="fill_parent">
     <TableRow>
       <LinearLayout android:id="@+id/LinearLayout01"
                         android:layout_width="fill_parent"
                         android:layout_height="fill_parent" 
                         android:layout_weight="0.4"
                         android:orientation="vertical"></LinearLayout>
    <com.epaga.ArcDrawableView 
                         android:layout_width="fill_parent" 
                         android:layout_height="fill_parent" 
                         android:gravity="right" android:layout_weight="0.1" >
       </com.epaga.ArcDrawableView>
     </TableRow>
   </TableLayout>
 </ScrollView>

Вещи, которые я пробовал:

  • изменение отображаемого вида (который должен быть фиксированным столбцом) на android:layout_width="150px"
  • изменяя настройку stretchcolumns на 0.
  • изменение левых столбцов layout_width на fill_parent (выталкивает правый столбец за пределы экрана) или wrap_content (сворачивает левый столбец)

Есть мысли?

1 Ответ

4 голосов
/ 28 февраля 2010

Есть мысли?

Во-первых, почему вы используете TableLayout? Почему бы просто не использовать вложенные LinearLayouts? Вы уже решили, что вас не волнует основное использование TableLayout - автоматического вычисления размеров столбцов - потому что вы пытаетесь исправить размеры столбцов самостоятельно.

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

...