Android在小部件文本上使用省略号

Android在小部件文本上使用省略号,android,Android,我用文本创建了一个小部件。我想补充。。。到文本末尾,没有足够的位置显示整个文本。我使用了android:ellipsize=“end”,但只有前两行可见 这是小部件布局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="64dip" andr

我用文本创建了一个小部件。我想补充。。。到文本末尾,没有足够的位置显示整个文本。我使用了android:ellipsize=“end”,但只有前两行可见

这是小部件布局:

<?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>

您发现了我最喜欢的框架bug之一:

请随意启动它,并希望我们很快看到解决方案。其中的注释还指出了一些可以通过自定义视图实现的解决方案,以克服此问题。您还可以结合使用
Paint.measureText()
TextUtils.ellipsize()


HTH

如果将
android:minLines
设置为3,它是在3处停止还是修复了错误?您的XML中是否仍然有
android:ellipsize=“end”
值。如果你是手动操作的话,这个问题就需要解决了。看起来这个bug已经存在了3年了。我最喜欢你的变通方法,你能检查一下我做错了什么吗?代码在主位置
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);