0

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

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

  • 同样,我希望左侧的视图水平居中于左侧,右侧的视图水平居中于右侧。目前,右视图紧挨着左视图放置。我可以解决这个问题的唯一方法是在两个文本视图之间添加类似这样的内容:

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

    基本上充当一个间隔,其大小取决于两个 TextView 中文本的长度

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

4

1 回答 1

2

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

<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".

我想你会明白的……其实我很着急,该离开办公室了。

于 2013-01-16T14:20:22.003 回答