我有一个EditText视图,我用它来向用户显示信息。 我可以通过以下方法正确地附加字符串:
public void PrintToUser(String text){
MAIN_DISPLAY.append("\n"+text);
}
这个应用是一个RPG游戏,其中有战斗,当用户在战斗时,我希望显示的字符串是红色的。因此,我尝试使用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时用户看到顶部。
最后我的问题:
有没有一种方法可以追加格式化的文本?
或者...我可以从EditText中检索格式化的文本,然后当我使用.setText时保留当前格式吗?
如果可以的话...有没有一种方法将显示焦点设置在底部而不是顶部?
谢谢!如果需要额外的信息,请评论,我已经卡了一段时间了。