2012-05-23 43 views
2

以下是关于如何最好地处理文本截断的一个简短问题。你知道一个很好的方式来显示完整的字符串,当用户被TextView截断时?Android屏幕上的TextView对象和截断(针对多个屏幕设计)

任何大小的屏幕都可能会在TextView中设置长字符串的文本。当应用程序支持多种尺寸,特别是普通和大尺寸屏幕时,问题就会变得更加明显。

一个很好的建议是使文本视图可滚动。我对这个建议的问题是,我已经计划了四个方向的滑动导航交互,这使得文本视图滚动变得复杂。我今天在Android Office时间提出了这个问题。任何建议,特别是基于现有解决方案的建议,都会受到欢迎。在此先感谢...

+0

我有点困惑。为什么不只是出现在多行? – mtmurdock

+0

另一个建议可能是做一个自动缩放的TextView: http://stackoverflow.com/questions/5033012/auto-scale-textview-text-to-fit-within-bounds – Pablo

回答

0

一种方法喊得问题是一个属性添加到TextView中即会无需添加代码即可滚动:

android:lines="3" 
android:textIsSelectable="true" 
android:fadeScrollbars="false" 

这是Android Dev Relations团队成员在办公时间提出的建议。但是,在测试时,scroll在Android 2.2.2版上无法使用。我的新解决方案是声明textview可点击并使用onClick回调来打开对话框。

所以,现在我省略了文本(没有更多的滚动标签),让用户清楚地指示文本被切断。下面是XML:

android:lines="3" 
android:clickable="true" 
android:onClick="showDef" 
android:ellipsize="start" 
android:isScrollContainer="false" 

和这里是showDef方法:

public void showDef(View v) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setMessage("same text as was set in the text view") 
     .setCancelable(false) 
     .setNegativeButton("Clear", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       dialog.cancel(); 
      } 
     }); 

AlertDialog alert = builder.create(); 
alert.show() 

我喜欢这个解决方案比在含有TextView的视图组具有固定大小的情况下简单滚动要好。我希望它也适用于你。

0

有一个完美的指导方针,建议调整文字大小为相应的屏幕大小。 Here你可以找到它。

此外还有可能用于文本视图的属性;

<TextView 
android:id="@+id/textView1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Small Text" 
android:textAppearance="?android:attr/textAppearanceSmall" /> 
  • 介质
<TextView 
android:id="@+id/textView1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Medium Text" 
android:textAppearance="?android:attr/textAppearanceMedium" /> 
<TextView 
android:id="@+id/textView2" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Large Text" 
android:textAppearance="?android:attr/textAppearanceLarge" /> 
+0

谢谢,但调整了文本视图或文本的大小将不会诀窍 - 字符串的长度是一个变量,因为是屏幕大小。在同一屏幕上有两个textview对象。它们以固定大小的视图组显示。如果两者在同一时间都是长弦,则会被切断。如果文本太多并发生截断,我如何将其显示给用户? – Beth

+0

@贝丝。 (错误的解决方案^^) - >假设您知道可变长度并通过DisplayMetrics知道屏幕分辨率。然后你可以写一些能找到最佳文本大小的东西。 (更好的解决方案) - >使用多行TextView。祝你好运! –

+0

Pablo还提到了我的问题评论中我的不好的解决方案的相同的东西,我猜。 –

0

您可以使用它来截断文本:

<TextView 
android:id="@+id/textView1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="This is your text" 
android:ellipsize="marquee" android:lines="1 /> 
+0

是的,谢谢,没错。将在我的布局中截断的两个文本浏览是本文的原因。我想创建一个良好的用户交互,以在椭圆标签截断一个或两个文本视图时显示全文。滚动textview解决方案有2个问题(滚动视图有副作用和滚动可能会打破我的刷卡/导航导航。任何其他想法? – Beth