Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android TextView-每20个字符后添加一行_Android_Android Layout_Android Studio_Textview - Fatal编程技术网

Android TextView-每20个字符后添加一行

Android TextView-每20个字符后添加一行,android,android-layout,android-studio,textview,Android,Android Layout,Android Studio,Textview,我很难在每20个字符后添加一行。我看过很多帖子,对android:commands以及TextView/EditText应该使用哪些命令感到困惑 这是我为textview编写的XML代码: <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/descript

我很难在每20个字符后添加一行。我看过很多帖子,对android:commands以及TextView/EditText应该使用哪些命令感到困惑

这是我为textview编写的XML代码:

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/descriptionResult"
            android:text="abcdefghijklmnopqrstuvwz abcdefghijklmnopqrstuvwz"
            android:textColor="#FFFFFF"
            android:maxEms="20"
            android:singleLine="false"/>

我还尝试了多种命令,例如:

安卓:maxLength(20)-它切断了我的文本,但不在新行上显示其余的文本

android:maxWidth(100p)-错误

我经常遇到的错误是:

呈现期间引发的异常:java.util.Locale.toLanguageTag()Ljava/lang/String


有人能解决我的问题吗?这必须用java来完成吗?如果是这样的话,怎么办?请提前感谢

每个TextView都在后面有一个渲染引擎。Layout类确定何时拆分为换行符,并在变量(如文本大小、视图尺寸、填充、从右到左、字符串内容等)中进行分解


首先,您可以签出并覆盖
getLineCount()
getLineStart(int)
方法。getLineCount()返回此布局中文本的行数,而getLineStart(int)返回指定行开头的字符串内容的字符偏移量。

在@Der Golem的帮助下,我尝试提出一种解决方案。这个想法是,您需要从类文件中设置文本。并在每20个字符后追加'\n'字符

所需变量

TextView textView;
String tmpString = "1234567890123456789012345678901234567890";
StringBuffer finalString;
需要在onCreate方法中编写的代码块

    textView = (TextView) findViewById(R.id.txt);
    int index = 0;
    finalString = new StringBuffer(); 
    while (index < tmpString.length()) {
        Log.i(TAG, "test = " + tmpString.substring(index, Math.min(index + 20,tmpString.length())));
        finalString.append(tmpString.substring(index, Math.min(index + 20,tmpString.length()))+"\n");
        index += 20;
    }
    textView.setText(finalString);

这不是一个很好的解决方案,但可能符合您的要求。如果您需要进一步帮助,请告诉我。

android:maxLength(20)
将您的文本限制为20个字符。如果要每20个字符分割一行,则必须在每20个字符的位置插入换行符(仅供参考)。这是在Java代码中完成的,而不是在xml布局中完成的。我真的被卡住了。你知道怎么做吗?看看这篇文章:很抱歉,我真的不明白你在说什么,我是android新手,我认为这个简单的任务会更容易实现。非常感谢你,我只有几个问题。标签是什么意思?tempString变量是否只是一个示例?我会用textView变量替换它吗?抱歉,我没有经验,我之所以这么问,是因为标记在您的tmpString中的我的java文件上显示为错误,请添加您想要显示的字符串。您可以对日志行进行注释,这只是为了调试。谢谢,我现在就尝试一下。代码工作得很好。谢谢,它确实在中途删除了单词,并在下面继续。如果有空格,你知道如何添加省略号或只输入新行吗?
    String mainString = "Hi Android, How are you? I hope you are doing great.";
    String[] stringArray = mainString.split("\\s+");
    String tmpString = "";
    for (String singleWord : stringArray) {
        Log.d(TAG, "singleWord = " + singleWord);
        if ((tmpString + singleWord + " ").length() > 20) {
            finalString.append(tmpString + "\n");
            Log.e(TAG, "finalString = " + finalString);
            tmpString = singleWord + " ";
        } else {
            tmpString = tmpString + singleWord + " ";
        }
        Log.d(TAG, "tmpString = " + tmpString);
    }

    if (tmpString.length() > 0) {
        finalString.append(tmpString);
        Log.e(TAG, "last finalString = " + finalString);
    }
    textView.setText(finalString);