2012-05-15 36 views
0

我创建了一个包含文本的小部件。我想将...添加到没有足够空间显示整个文本的文本末尾。我用android:ellipsize="end"但只有前两行是可见的。在小部件文本上使用椭圆大小的Android

这是窗口小部件布局:

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

第一图像是与ellipsize效果。第二个是没有它。你可以看到有足够的地方显示更多的文字。

enter image description here 我在一个1x2的小部件也试过了,同样的情况

enter image description here

感谢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); 
+0

如果你设置'机器人什么省略号:minLines' 3,它停止在3或者这是否修复bug? – Blundell

+0

您的XML中是否还有'android:ellipsize =“end”'值。如果您正在手动执行操作,那需要消失。 – Devunwired

+0

当然我删除它 – erdomester

回答

2

你已经找到了我最喜欢的框架的错误之一:http://code.google.com/p/android/issues/detail?id=2254

随时登录并希望我们很快就能看到该解决方案。这些评论也指出了一些您可以通过自定义视图来解决问题的解决方案。您也可以手动将使用Paint.measureText()组合和TextUtils.ellipsize()

HTH

+0

它看起来像这个bug已经持续了3年。我最喜欢你的解决方法,你能检查一下我做错了吗?代码在主帖中 – erdomester

相关问题