使用截断文本将右侧和左侧与线性或相对布局对齐?

时间:2010-08-14 01:18:13

标签: java android user-interface

我正在尝试做一个如下所示的listview: alt text http://pici.se/pictures/hjFksZvLx.jpg

它有两个部分,左边是左对齐的,包含两个单行和截断的文本视图。 右边的部分也有两个文本视图,但是它们是右对齐的并且具有恒定的大小。主要问题是右侧部分与右侧不对齐。 如果我使用静态宽度将其推到右侧,它的效果非常好,但在横向模式下它看起来不太好。

我认为应该很容易实现。但事实并非如此。

首先我尝试使用Linearlayout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <LinearLayout
        android:orientation="vertical"
        android:id="@+id/L1"
        android:layout_height="fill_parent"
        android:layout_weight="0.8"
        android:layout_width="0dip">
        <TextView
            android:id="@+id/text1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:lines="1"
            android:ellipsize="end"
            android:scrollHorizontally="true"
            android:text="Long text Long text Long text Long text Long text Long text Long text" />
        <TextView
            android:id="@+id/text2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:lines="1"
            android:ellipsize="end"
            android:scrollHorizontally="true"
            android:text="Short text" />
    </LinearLayout>
    <LinearLayout
        android:orientation="vertical"
        android:id="@+id/L2"
        android:layout_gravity="top|right"
        android:layout_height="fill_parent"
        android:layout_weight="0.2"
        android:layout_width="0dip">
        <TextView
            android:id="@+id/text4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:text="12:12" />
        <TextView
            android:id="@+id/text3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="64%"
            android:layout_gravity="right" />
    </LinearLayout>
</LinearLayout>

我一直在摆弄重量属性,但它似乎没有帮助。右边部分根本不对齐。

然后我尝试使用Relativelayout:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent">
    <TextView
        android:id="@+id/text1"
        android:layout_height="wrap_content"
        android:lines="1"
        android:scrollHorizontally="true"
        android:layout_alignParentTop="true"
        android:text="Long text Long text Long text Long text Long text Long text Long text"
        android:layout_alignParentLeft="true"
        android:ellipsize="end"
        android:layout_width="275dp" />
    <TextView
        android:id="@+id/text2"
        android:layout_height="wrap_content"
        android:lines="1"
        android:ellipsize="end"
        android:scrollHorizontally="true"
        android:text="Long text Long text Long text Long text Long text Long text Long text"
        android:layout_below="@+id/text1"
        android:layout_alignParentLeft="true"
        android:layout_width="275dp" />
    <TextView
        android:id="@+id/text3"
        android:layout_height="wrap_content"
        android:text="12:12"
        android:layout_gravity="right"
        android:layout_alignParentRight="true"
        android:layout_alignBaseline="@+id/text1"
        android:layout_width="40dp"
        android:layout_alignRight="@+id/text4" />
    <TextView
        android:id="@+id/text4"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:text="64%"
        android:layout_alignParentRight="true"
        android:layout_alignBaseline="@+id/text2"
        android:layout_width="40dp" />
</RelativeLayout>

这里的问题相同,右边的部分没有正确对齐,我必须使用android:layout_width的静态大小将其推送到另一边。 如果不使用静态大小,文本会相互开始剪切。

1 个答案:

答案 0 :(得分:9)

我和你几天前有同样的问题。 一些要点:

  • 我使用android:singleLine="true"代替android:lines="1"。老实说,我不知道区别。我想一旦被弃用了。

  • 右对齐:android:gravity="right"

  • 为了避免重叠,我将TextViews放在LinearLayout的左侧,然后添加android:layout_marginRight="50dp"

我的xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent">

    <LinearLayout android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:orientation="vertical"
    android:layout_marginRight="50dp">

        <TextView
            android:id="@+id/text1"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:scrollHorizontally="true"
            android:layout_alignParentTop="true"
            android:text="Long text Long text Long text Long text Long text Long text Long text"
            android:layout_alignParentLeft="true"
            android:ellipsize="end"
            android:layout_width="275dp" />
        <TextView
            android:id="@+id/text2"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:ellipsize="end"
            android:scrollHorizontally="true"
            android:text="Long text Long text Long text Long text Long text Long text Long text"
            android:layout_below="@+id/text1"
            android:layout_alignParentLeft="true"
            android:layout_width="275dp" />
    </LinearLayout>

    <TextView
        android:id="@+id/text3"
        android:layout_height="wrap_content"
        android:text="12:12"
        android:layout_gravity="right"
        android:layout_alignParentRight="true"
        android:layout_alignBaseline="@+id/text1"
        android:layout_width="40dp"
        android:layout_alignRight="@+id/text4" />
    <TextView
        android:id="@+id/text4"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:text="64%"
        android:layout_alignParentRight="true"
        android:gravity="right"
        android:layout_below="@id/text3"
        android:layout_width="40dp" />
</RelativeLayout>

使用android:layout_marginRight="50dp"来避免重叠感觉不是正确的选择,但此刻是我找到的唯一解决方案。