我有一个 EditText 视图,用于向用户显示信息。我能够附加一个字符串,它可以使用以下方法正常工作:
public void PrintToUser(String text){
MAIN_DISPLAY.append("\n"+text);
}
该应用程序是一个有战斗的 RPG 游戏,当用户战斗时,我想以 RED 显示字符串。所以我尝试使用 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);
}
这种新方法有效,新行显示为红色。
问题
只有最后一行格式化为红色。如果将新行设置为红色,则由于我检索文本的方式会丢失以前的格式
字符串 CurrentText = MAIN_DISPLAY.getText().toString();
当我只将字符串附加到 EditText 时,它现在在使用 SetText 时显示 EditText 框的底部(最后一个输入),用户看到的是顶部。
最后我的问题:
有没有办法附加格式化的文本?
或者...我可以从 EditText 检索格式化文本,然后当我使用 .setText 时,我可以保持当前格式吗?
如果是这样...有没有办法将显示集中在底部而不是顶部?
谢谢!如果需要更多信息,请发表评论我已经坚持了一段时间了。