android sdk垂直左对齐垂直linearlayouts中的文本

时间:2015-08-24 18:30:19

标签: android android-layout

我的远程视图包含3行文本/图像,每行包含2个textview和1个imageview。

我的结构是: -

垂直线性布局   水平线性布局   水平线性布局   水平线性布局。

我使用的布局xml是: -

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="5dp"
    android:paddingTop="5dp"
    android:paddingBottom="10dp"
    android:id="@+id/wevents"
    android:gravity="center_vertical">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical|left"
        android:layout_gravity="center_vertical"
        android:id="@+id/sub3">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="+10"
            android:id="@+id/wdays3"
            android:layout_weight="1"
            android:textColor="#ffffff" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Some Text"
            android:id="@+id/wsubject3"
            android:layout_weight="4"
            android:textColor="#ffffff"
            android:paddingLeft="5dp"
            android:scrollHorizontally="true"
            android:ellipsize="end"
            android:maxLines="1"
            android:singleLine="true"
            android:layout_gravity="left" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/walarm3"
            android:src="@drawable/bell_white"
            android:layout_weight="1"
            android:layout_gravity="center" />
    </LinearLayout>

    ... (each of the other linearlayouts is exactly the same)

我有两个问题: -

  1. 我无法让第二个文本字段在其前身下垂直对齐。
  2. 如果第二个文本字段太长,则会将图像推到第二行。
  3. 所以:

    1. 如何使所有文本保持对齐。
    2. 如何使用省略号限制长文本被截断,以便图像也对齐?

1 个答案:

答案 0 :(得分:1)

1和2的答案实际上应该是相同的;您需要在TextViews和ImageViews上将 layout_width 属性更改为0dp。 所以第一个TextView应该显示:

        <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="+10"
        android:id="@+id/wdays3"
        android:layout_weight="1"
        android:textColor="#ffffff" />

然后对其他TextViews和ImageViews执行相同的操作。

问题是当你在水平LinearLayout中对这些视图使用 layout_weight 时,你会说每个视图的宽度应该通过参考你指定的权重来计算,但是当你说 layout_width =“wrap_content”,你说宽度应该根据视图内部的内容计算,即文本的长度或图像的大小。指定两种方法来计算宽度会产生一些奇怪的结果,但是如果你将宽度设置为0dp,那么它将直接转到你设置的权重。

这可能不言而喻,但无论如何我会说,如果你在垂直线性布局中使用权重,你需要将 layout_height 属性设置为0dp。 / p>