我有一个EditText视图,用于向用户显示信息。我能够附加一个字符串,它可以使用以下方法正常工作:
public void PrintToUser(String text){
MAIN_DISPLAY.append("\n"+text);
}
该应用程序是一个RPG游戏,有战斗,当用户正在战斗时,我想在RED中显示String。所以我试图使用SpannableString。 (改变了方法)
public void PrintToUser(String text, int Colour){
if(Colour == 0){
//Normal(Black) Text is appended
MAIN_DISPLAY.append("\n"+text);
}else{
//Colour text needs to be set.
//Take the CurrentText
String CurrentText = MAIN_DISPLAY.getText().toString();
CurrentText = CurrentText+"\n";
SpannableString SpannableText = new SpannableString(CurrentText + text);
switch(Colour){
case 1:
SpannableText.setSpan(new ForegroundColorSpan(Color.RED), CurrentText.length(), SpannableText.length(), 0);
break;
}
//You cannot append the Spannable text (if you do you lose the colour)
MAIN_DISPLAY.setText(SpannableText, BufferType.SPANNABLE);
}
此新方法有效,新行显示为红色。
问题
仅格式化的最后一行为红色。如果新行设置为红色,则由于我检索文本的方式
,之前的格式将丢失String CurrentText = MAIN_DISPLAY.getText()。toString();
当我只将字符串附加到EditText时,它显示EditText框的底部(最后一个输入),现在使用SetText时,用户看到的是Top。
最后我的问题:
有没有办法附加格式化文本?
OR ... 我可以从EditText中检索格式化文本,然后当我使用.setText时,我可以保留当前格式吗?
如果是这样...... 有没有办法将显示屏聚焦在与顶部相对的底部?
谢谢!请评论是否需要其他信息我已经坚持了一段时间。
答案 0 :(得分:2)
我的建议是使用方法:
myTextView.setText(Hmtl.fromHtml(myString));
myString的格式可以是:
String myString = "Hello <font color=\'#ff0000\'>World</font>";
答案 1 :(得分:1)
对PrintToUser()
的以下修改应该有效..
public void PrintToUser(String text, int Colour){
...
...
Editable CurrentText = MAIN_DISPLAY.getText();
int oldLength = CurrentText.length();
CurrentText.append("\n" + text);
switch(Colour){
case 1:
CurrentText.setSpan(new ForegroundColorSpan(Color.RED),
oldLength, CurrentText.length(), 0);
break;
}
}
答案 2 :(得分:0)
尝试更改
SpannableText.setSpan(new ForegroundColorSpan(Color.RED), CurrentText.length(), SpannableText.length(), 0);
在
SpannableText.setSpan(new ForegroundColorSpan(Color.RED), 0, SpannableText.length(), 0);