Android屏幕上的TextView对象和截断(针对多个屏幕设计)

Android屏幕上的TextView对象和截断(针对多个屏幕设计),android,android-layout,android-widget,Android,Android Layout,Android Widget,下面是一个关于如何最好地处理文本截断的简短问题。你知道一个好的方法来显示完整的字符串给用户时,它被一个TextView切断 任何大小的屏幕都可能切掉TextView中设置的长字符串的文本。当一个应用程序支持多种尺寸,特别是普通和大尺寸屏幕时,问题变得更加明显 一个好的建议是使文本视图可滚动。我对这个建议的问题是,我计划在所有四个方向上进行滑动导航交互,这使文本视图滚动变得复杂。我今天在Android办公时间提出了这个问题。欢迎提出任何建议,特别是基于现有解决方案的建议。提前感谢…这里有一个完美的

下面是一个关于如何最好地处理文本截断的简短问题。你知道一个好的方法来显示完整的字符串给用户时,它被一个TextView切断

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


一个好的建议是使文本视图可滚动。我对这个建议的问题是,我计划在所有四个方向上进行滑动导航交互,这使文本视图滚动变得复杂。我今天在Android办公时间提出了这个问题。欢迎提出任何建议,特别是基于现有解决方案的建议。提前感谢…

这里有一个完美的指南,建议您根据相应的屏幕大小调整文本大小。你可以找到它

还有一些属性可以用于文本视图

小的 中等的 大的
有一个完美的指南,建议您将文本大小调整为相应的屏幕大小。你可以找到它

还有一些属性可以用于文本视图

小的 中等的 大的
您可以使用此选项截断文本:

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

您可以使用此选项截断文本:

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

解决此问题的一种方法是在textview中添加一个属性,使其可以滚动,而无需添加代码:

android:lines="3"
android:textIsSelectable="true" 
android:fadeScrollbars="false"
这是Android开发关系团队的一名成员在办公时间提出的建议。然而,经过测试,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的视图组具有固定大小的情况下的简单滚动相比,我更喜欢此解决方案。我希望它也适用于您。

解决此问题的一种方法是在textview中添加一个属性,使其在不添加代码的情况下可滚动:

android:lines="3"
android:textIsSelectable="true" 
android:fadeScrollbars="false"
这是Android开发关系团队的一名成员在办公时间提出的建议。然而,经过测试,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的视图组具有固定大小的情况下的简单滚动相比,我更喜欢此解决方案。我希望它对你也有用。

我有点困惑。为什么不让文本显示在多行上呢?另一个建议是使用自动缩放文本视图:我有点困惑。为什么不让文本显示在多行上呢?另一个建议是自动缩放文本视图:谢谢,但是调整文本视图或文本的大小不会起作用-字符串的长度是一个变量,屏幕大小也是一个变量。同一屏幕上有两个textview对象。它们显示在固定大小的视图组中。如果两者同时是长串,它们就会被切断。如果文本太多而发生截断,我如何向用户显示它?@Beth。错误的解决方案^^->假设您知道可变长度,并且通过DisplayMetrics知道屏幕分辨率。然后你可以写一些找到最佳文本大小的东西。更好的解决方案->使用多行文本视图。祝你好运我猜,巴勃罗在你的问题评论中也提到了我糟糕的解决方案。我使用了多行。但是,数据的大小可以并且将超过单个屏幕上可以容纳的行数。即使是最大屏幕上最小的字体大小也可能被切断。谢谢你允许我澄清。我正在寻找一个超越动态大小调整的解决方案,因为我提前知道文本将被剪切。谢谢,但是调整textview或文本的大小不会起作用-字符串的长度是一个变量,屏幕大小也是一个变量。同一屏幕上有两个textview对象。它们显示在固定大小的视图组中。如果两者同时是长串,它们就会被切断。如果文本太多而发生截断,我如何向用户显示它?@Beth。错误的解决方案^^->假设您知道可变长度,并且通过DisplayMetrics知道屏幕分辨率。然后你可以写一些找到最佳文本大小的东西。更好的解决方案->使用多行文本视图。祝你好运我猜,巴勃罗在你的问题评论中也提到了我糟糕的解决方案。我使用了多行。但是,数据的大小可以并且将超过单个屏幕上可以容纳的行数。前夕
n最大屏幕中的最小字体大小可能会被截断。谢谢你允许我澄清。我正在寻找一个超越动态大小的解决方案,因为我提前知道文本将被剪切。是的,谢谢,没错。两个文本视图将在我的布局中被截断,这就是我写这篇文章的原因。我想创建一个良好的用户交互,以便在省略标记截断一个或两个文本视图时显示全文。滚动文本视图解决方案有两个问题滚动视图有副作用,滚动可能会破坏我的滑动/投掷导航。还有其他想法吗?是的,谢谢,没错。两个文本视图将在我的布局中被截断,这就是我写这篇文章的原因。我想创建一个良好的用户交互,以便在省略标记截断一个或两个文本视图时显示全文。滚动文本视图解决方案有两个问题滚动视图有副作用,滚动可能会破坏我的滑动/投掷导航。还有其他想法吗?