为什么这些观点不一致?

时间:2010-11-04 11:53:21

标签: java android xml tablelayout

我无法弄清楚为什么我需要做的就是让我在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比其他所有TextView显示2个像素。 覆盖onLayout方法;我看到onLayout正在调用第一个View: 顶部= 2;底部= 44;而所有其他的都是top = 0; bottom = 42。

只要字体大小与其他字体略有不同,就会发生这种情况;或者如果文本换行另一行(因为它不适合宽度)。 所有TextView都具有相同的尺寸;但有些显示略低于另一些。

如果这会产生影响,则此布局位于RelativeLayout内。

我尝试了很多不同的组合,并且总会发生一些差异。 任何帮助将不胜感激。

谢谢! JY

1 个答案:

答案 0 :(得分:3)

看起来textview的基线对齐了。因此,如果文本较小,其基线将在textview内更高。因此,文本视图的位置将更低,以匹配其他文本视图的基线与更高的文本。

要防止行中的基线对齐,请尝试将TableRow行更改为:

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

缺点当然是文本可能看起来不再对齐。