ユーザーに情報を表示するために使用している 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 を使用すると現在の書式を維持できますか?
もしそうなら...上部ではなく下部にディスプレイを集中させる方法はありますか?
ありがとうございました!追加情報が必要な場合はコメントしてください。私はしばらくこれに固執しています。