我在每20个字符后添加新行时遇到问题。我看过很多文章,并对android:命令感到困惑,哪些命令应该用于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"/>
我还尝试了各种命令,例如:
android:maxLength(20)-截断我的文本,但不显示其他行
android:maxWidth(100p)-错误
我一直得到的错误是:
呈现期间引发的异常:java.util.Locale.toLanguageTag()Ljava / lang / String;
有人能解决我的问题吗,这必须用java完成吗?如果是这样怎么办?,请先谢谢
在@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);
更新: 参考,
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);
这不是一个很好的解决方案,但可能会满足您的要求。让我知道您是否需要进一步的帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句