截断AppWidget布局上的TextView

时间:2012-11-07 09:51:43

标签: android textview truncate multiline android-appwidget

人!

好吧,谷歌搜索了近两天没有结果,我决定在这里问。 (这是我的第一个问题。)

我正在为Android创建一个引号窗口小部件(每次显示一个随机引用),因此它有两个TextView和一个ImageButton来获取一个新的随机引用。第一个TextView显示引用文本,第二个显示引用的作者。并且,当用户点击窗口小部件时,它会调用一个活动,以全屏显示报价,如果需要则使用滚动条,依此类推。

问题是引用的文本有时很长,所以我想要对它进行椭圆化处理。但是因为ellipsize不能超过2行...我正在寻找想法。

我不知道是否有必要,但这是布局代码。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/laySmall"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_margin="@dimen/widget_margin"
    android:background="@drawable/widgetback" >
    <ImageButton
        android:id="@+id/ibtNext"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_marginBottom="4dp"
        android:layout_marginLeft="4dp"
        android:layout_marginRight="4dp"
        android:background="@null"
        android:contentDescription="@string/app_name"
        android:src="@drawable/seta" />
    <TextView
        android:id="@+id/txtWdgQuote"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/ibtNext"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_marginBottom="8dp"
        android:layout_marginLeft="4dp"
        android:layout_marginRight="4dp"
        android:layout_marginTop="4dp"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:textColor="#000000"
        android:textStyle="italic"
        android:typeface="serif"
        android:maxLines="3" />
    <TextView
        android:id="@+id/txtWdgAuthor"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_marginBottom="4dp"
        android:layout_marginLeft="4dp"
        android:layout_marginRight="4dp"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:textColor="#000000"
        android:textStyle="bold" />
</RelativeLayout>

基本上,我在这个项目中有3个AppWidgets,显示了几乎相同的东西。所有变化都是尺寸和字体大小。

所以......我的一个想法是使用自定义TextView。但是在AppWidget中,没办法。 :/

另一个想法是做这样的事情:

if (quoteText.length() > something) {
    quoteText = quoteText.substring(0, something) + "\"[...]"
}

此解决方案的问题在于换行符在哪里,因为它可以更改可以显示的字符串的大小。例如,假设一个包含小词的字符串:这些行将在边框旁边打破。与此同时,一条字符串的字符串越大,字符串就越远离边界。

所以......我不知道我做了什么。有什么想法吗?

谢谢!

(我遇到了android:layout_margin的问题,所以它可能会小一点,但我还没时间研究它。

0 个答案:

没有答案