布局麻烦

时间:2013-01-16 12:54:32

标签: android layout

我有一个相当简单的布局麻烦。这是:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

  <TextView
        android:id="@+id/id1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:ellipsize="end"
        android:maxLines="1"/>

  <TextView
        android:id="@+id/id2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"/>
</LinearLayout>

3个问题:

  • 如何在父LinearLayout中将两个TextView(或者更好的说,这些视图中的文本)垂直居中?左视图垂直居中OK,但右视图(因为它的字体较小)不是。它似乎垂直居中于顶部。我显然尝试使用第二个视图的layout_gravity,但这没有任何区别。我可以解决它的唯一方法是将第二个TextView包装在LinearLayout中,并将其布局高度参数设置为match_parent(但这是正确的方法吗?)

  • 同样,我希望左侧的视图水平居中于左侧,而右侧的视图则水平居中于右侧。目前,右侧视图立即放置在左侧视图旁边。我能解决这个问题的唯一方法是在两个文本视图之间添加这样的东西:

    <TextView
        android:layout_width="0dip"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:text="">
    

    基本上充当间隔符,根据TextViews中文本的长度减小尺寸

  • 如果视图的组合文本不适合水平,我希望截断左视图中的文本。没有包装到新线上。目前,左侧视图中的文本只是“推”出父视图中的右侧文本。不知道如何实现这一点(除了添加android:maxLines="1"以阻止文本包装)。我尝试了android:ellipsize="end",但似乎没有任何效果。

1 个答案:

答案 0 :(得分:2)

最好的方法是使用相对布局,但是如果你想在线性布局中做同样的事情,那么在xml文件中做一些更改 -First设置线性布局高度作为匹配父级:

<LinearLayout android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="horizonatal">

- 使视图在中心垂直处可见的第二个

android:layout_gravity="center_vertical"

同一属性android:layout_gravity =“center_horizo​​ntal”,你还必须在第二个文本视图中添加。

它会使您的两个文本视图显示在中心垂直,但一个显示在另一个旁边。 要使第二个视图显示在右侧,我认为您可以添加  android:layout_marginLeft =“xx dp” 用一些值代替xx。

关于截断文本的第三个问题,你应该给TextView一些大小而不是包装内容..就像android:layout_width ="25dp" 然后使用android:ellipsize="end"

我想你会得到那个......实际上我很着急,有时间离开办公室。