0

テキスト付きのウィジェットを作成しました。テキスト全体を表示するのに十分な場所がないテキストの末尾に ... を追加したい。使用 android:ellipsize="end"しましたが、最初の 2 行しか表示されません。

これはウィジェットのレイアウトです:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="64dip"
    android:layout_height="72dip"
    android:layout_gravity="center"
    android:id="@+id/widgetlayout">

    <ImageView android:id="@+id/ImageView01"
     android:layout_width="72dip" 
     android:layout_height="72dip"
     android:scaleType="fitXY">
    </ImageView>

    <TextView
        android:id="@+id/tvConfigInput"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:gravity="left"
        android:textColor="#FFFFFF"
        android:layout_margin="2dip"    
        android:ellipsize="end"
        android:textSize="12dip" />

</RelativeLayout>

最初の画像は、楕円形効果を使用したものです。2枚目は無しです。より多くのテキストを表示するのに十分な場所があることがわかります。

ここに画像の説明を入力 1x2ウィジェットでも試してみましたが、同じことが起こります

ここに画像の説明を入力

Devunwired のおかげで、私は今これを試していますが、何も変わっていません (sg が間違っていると思います)。

RemoteViews views = new RemoteViews(c.getPackageName(), R.layout.widget_layout);

        TextPaint paint = new TextPaint(); 
        final float densityMultiplier = this.getResources().getDisplayMetrics().density;
        final float scaledPx = 20 * densityMultiplier;
        paint.setTextSize(scaledPx);
        final float size = paint.measureText(widgettext);  
        Log.i("size", size + "");  //1716 e.g

        while (widgettext != TextUtils.ellipsize(widgettext, paint, (float)GetDipsFromPixel(72),  TextUtils.TruncateAt.END)) { 
            paint.setTextSize(paint.getTextSize() - 1);
        }

        views.setTextViewText(R.id.tvConfigInput, widgettext);
        views.setTextColor(R.id.tvConfigInput, loadedtextcolor);

        views.setFloat(R.id.tvConfigInput, "setTextSize", int_widgetfontsize);
4

1 に答える 1

2

私のお気に入りのフレームワーク バグの 1 つを見つけました: http://code.google.com/p/android/issues/detail?id=2254

お気軽にスターを付けてください。これがすぐに修正されることを願っています。内のコメントは、問題を克服するためにカスタム ビューで実装できる多くのソリューションも示しています。Paint.measureText()との組み合わせを使用して、省略記号を手動で配置することもできます。TextUtils.ellipsize()

HTH

于 2012-05-15T18:18:07.650 に答える