使TextView展开以填充容器空间(具有多个视图),然后截断

时间:2014-09-26 13:56:34

标签: android android-layout textview

我有一个布局,我有两个TextViews水平相邻。我想要实现的是一个视图,其中第二个TextView与第一个TextView的右侧对齐,但如果第一个TextView中的TextView变得太长,它将在右侧TextView的右边缘碰到容器边缘时截断。文本是动态设置的,可以有不同的长度。

我想要实现的图表如下(黄色=容器,红色框=第二个TextView):diagram

我目前的代码如下:

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

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:ellipsize="end"
        android:singleLine="true"
        android:textColor="@android:color/white"
        android:textIsSelectable="false"
        android:text="Test"
        android:textSize="18sp" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginLeft="5dp"
        android:layout_toRightOf="@id/textView1"
        android:background="@drawable/textView2Background"
        android:paddingBottom="2dp"
        android:paddingLeft="6dp"
        android:paddingRight="6dp"
        android:paddingTop="2dp"
        android:text="TextView2"
        android:textColor="@android:color/white"
        android:textSize="15sp" />

</RelativeLayout>

但是,第一个TextView只是在它到达容器末尾时截断,此时第二个TextView被推到它之外并且不再可见。

由于

2 个答案:

答案 0 :(得分:0)

您可以使用ImageSpan,请查看以前的问题:

SpannableString with Image example

答案 1 :(得分:0)

我能够使用以下布局解决这个问题:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:ellipsize="end"
        android:singleLine="true"
        android:textColor="@android:color/white"
        android:textIsSelectable="false"
        android:textSize="18sp" />

    <FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="2dp">

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/textView2Background"
            android:paddingBottom="2dp"
            android:paddingLeft="6dp"
            android:paddingRight="6dp"
            android:paddingTop="2dp"
            android:textColor="@android:color/white"
            android:textSize="15sp" />
    </FrameLayout>

</LinearLayout>