2010-11-04 3 views
2

Я не могу понять, почему мне нужно сделать, чтобы мои взгляды в TableLayout выровнялись идеально.Почему эти взгляды не совпадают?

У меня есть макет, похожее на это:

<TableLayout android:id="@+id/keyboard" 
    android:layout_width="fill_parent" 
    android:layout_height="378px"> 
    <TableRow android:layout_span="5" > 
     <TextView android:id="@+id/button20" 
      android:layout_width="63px" 
      android:layout_height="42px" 
      android:textSize="10" 
      android:text="L1" /> 
     <TextView android:id="@+id/button21" 
      android:layout_width="63px" 
      android:layout_height="42px" 
      android:textSize="12" 
      android:text="L2" /> 
     <TextView android:id="@+id/button22" 
      android:layout_width="63px" 
      android:layout_height="42px" 
      android:textSize="12" 
      android:text="L3" /> 
     <TextView android:id="@+id/button23" 
      android:layout_width="63px" 
      android:layout_height="42px" 
      android:textSize="12" 
      android:text="L4" /> 
     <TextView android:id="@+id/button24" 
      android:layout_width="63px" 
      android:layout_height="42px" 
      android:textSize="12" 
      android:text="L5" /> 
    </TableRow> 
</TableLayout> 

Теперь, когда обнажен, первый TextView отображается 2 пикселя нижних, чем все остальные. Переопределение метода onLayout; Я вижу, что onLayout вызывается для первого вида с: top = 2; bottom = 44; а все остальные - top = 0; bottom = 42.

Это происходит, когда размер шрифта немного отличается от остальных; или если текст переносится на другую строку (потому что она не соответствует ширине). Все текстовые элементы имеют одинаковые размеры; но некоторые отображаются немного ниже, чем другие.

Этот макет находится в RelativeLayout, если это имеет значение.

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

Спасибо! JY

ответ

3

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

Для предотвращения базового выравнивания в строке, попытайтесь изменить TableRow строку:

<TableRow android:layout_span="5" android:baselineAligned="false" > 

Недостаток заключается в том, конечно, что тексты не могут выглядеть выровненной больше.

+1

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

+0

Древний ответ с незапамятных времен, но все же Соответствующий! –

Смежные вопросы