我不相信有任何 xml 布局。我的猜测是你需要扩展TextView
和测量里面的文本长度onDraw(...)
,通过一些迭代相应地调整文本(即,一次删除一个字符,直到文本适合画布)
我刚刚发现另一个与您的问题非常相似的问题:Ellipsize only a section in a TextView。除了中间的椭圆之外没有其他答案。
另一个想法:
我想知道在水平线性布局中是否有一个带有主要文本(左椭圆,wrap_content)的文本视图和另一个带有括号中的数字(wrap_content)的文本视图。该布局将位于相对布局和layout_toLeftOf按钮内,即wrap_content、layout_alignParentRight。
这有什么意义吗?我现在没有 Eclipse 来自己测试它。不确定 (n) 文本视图是否会在按钮后面丢失或没有长文本。
或者(并且不那么有趣),您可以设置一个单一的相对布局,其中两个 textviews都是 layout_toRightOf并且按钮向右对齐(layout_alignParentRight)并设置第一个 textview 的最大宽度(android:maxWidth)。不过,您需要为不同的屏幕设置不同的布局。
一个具有固定最大宽度的示例,可以根据需要工作:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="click me"
android:id="@+id/bt1"
android:layout_alignParentRight="true"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="short text"
android:lines="1"
android:ellipsize="end"
android:id="@+id/t1"
android:layout_alignParentLeft="true"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="(n)"
android:lines="1"
android:id="@+id/n1"
android:layout_toRightOf="@id/t1"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="click me"
android:id="@+id/bt2"
android:layout_below="@id/bt1"
android:layout_alignParentRight="true"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="very long text that will not fit in any layout, regardless of the size of the screen"
android:lines="1"
android:ellipsize="end"
android:id="@+id/t2"
android:layout_below="@id/bt1"
android:layout_alignParentLeft="true"
android:maxWidth="220dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="(n)"
android:lines="1"
android:id="@+id/n2"
android:layout_below="@id/bt1"
android:layout_toRightOf="@id/t2"
/>
</RelativeLayout>