TextView文本在左侧切断,而不是缩短省略号

时间:2014-07-15 15:05:16

标签: android android-layout android-ui

查看布局的一部分:

<LinearLayout
            android:orientation="horizontal"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical|right"
            android:gravity="center_vertical|right"
            android:layout_weight="1">

            <TextView
                android:id="@+id/second_team_code"
                android:layout_marginRight="6dp"
                style="@style/TextView.TeamCode"/>

            <ImageView
                android:id="@+id/second_team_flag"
                android:layout_marginRight="1dp"
                style="@style/FlagImageView"/>

        </LinearLayout>

由于某种原因,当小尺寸的封闭视图导致文本溢出时,不会通过添加&#34; ...&#34;来缩短文本,但文本的开头会被截断。交换TextView和ImageView - 根据需要缩短文本的缩写。

为什么会这样?以及如何解决这个问题?

风格:

    <style name="TextView.TeamCode">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:singleLine">true</item>
    <item name="android:ellipsize">end</item>
    </style>

2 个答案:

答案 0 :(得分:3)

LinearLayout并不能很好地处理这种情况......我的意思是,如果你有第一个这样的孩子(wrap_content),你希望它在达到{{{{{{{ 1}}。不幸的是,它将以width = {parent_width}-{next_child_width}停止。
因此,如果文本会更大,则视图的左边界将移动到其父级之外(向左,但保持向右)绑定到位)并且文本的开头将被剪切(因为视图被部分地绘制在父母左边界外)。如果文本也不适合父宽度 - 文本也将从右侧剪切,但这次使用ellipsize(...)

您可以在此处查看结果:
enter image description here

尝试类似的东西:

{parent_width}

通过应用重量 <TextView android:id="@+id/second_team_code" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:singleLine="true" android:ellipsize="end" android:layout_marginRight="6dp" android:text="Super long text"/> 将占用所有剩余空间(具有固定宽度)并且不会被推到外面因为文本不适合内部。为了保持正确的对齐方式,您还可以添加:

TextView

答案 1 :(得分:0)

android:singleLine =“true”已过时。

而不是

android:singleLine="true"
android:ellipsize="end"

你必须使用

android:gravity="right"
android:inputType="text"