处理TextView中的溢出文本

时间:2016-09-20 14:59:15

标签: android android-layout

我有一个布局,我在人名旁边显示一些金额。我已将其设置在LinearLayout中并提供称重,以便在列表中列出时完全放置它。但如果我的金额值变大,它会分成我不想要的2行。如果金额很大,名称应缩小以显示全额。

金额很小时看起来像这样:

enter image description here

我的布局文件如下:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:orientation="horizontal"
    android:paddingBottom="5dp"
    android:paddingTop="5dp">

    <ImageView
        android:id="@+id/contact_image"
        style="@style/ContactImageView.ExtraSmall"
        app:contactBadge="@{contact}" />

    <TextView
        android:id="@+id/contact_name"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_weight="3"
        android:gravity="left"
        android:ellipsize="end"
        android:maxLines="1"
        android:text="@{contact.name}"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="@color/black" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/colon" />

    <TextView
        android:id="@+id/amount"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="end"
        app:amount="@{amount}"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="@color/black" />

</LinearLayout>

我正在使用ellipsize="end"处理溢出的名称。但是,应该显示全额。不能切割显示3个溢出点。

哪些布局更改可以解决问题?感谢。

2 个答案:

答案 0 :(得分:1)

好的,我发现了。

删除layout_weight,添加minWidth并将layout_width设置为wrap_content就可以了。

以下是已更改的身份amount的TextView:

<TextView
    android:id="@+id/amount"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:minWidth="70dp"
    android:gravity="end"
    app:amount="@{amount}"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textColor="@color/black" />

答案 1 :(得分:0)

您几乎就在那里,使用以下代码更新您的代码:

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

    <ImageView
        android:id="@+id/contact_image"
        style="@style/ContactImageView.ExtraSmall"
        app:contactBadge="@{contact}" />

    <TextView
        android:id="@+id/contact_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toEndOf="@+id/contact_image"
        android:layout_toStartOf="@+id/column"
        android:ellipsize="end"
        android:maxLines="1"
        android:paddingStart="@dimen/activity_horizontal_margin"
        android:text="@{contact.name}"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="@color/black" />

    <TextView
        android:id="@+id/column"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toStartOf="@+id/amount"
        android:text=":" />

    <TextView
        android:id="@+id/amount"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        app:amount="@{amount}"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="@color/black" />

</RelativeLayout>