Ich habe EditText und 3 Farbauswahlfelder. Ich möchte eine Farbe auswählen und dann den Text in EditText eingeben. Momentan kann ich nur den Text schreiben, auswählen und dann die Farbe des Textes ändern.Android - Textfarbe vor der Texteingabe in EditText setzen
ich folgende habe versucht, aber nicht funktioniert hat:
Einstellung ForegroundColorSpan Spanne
Spannable.SPAN_INCLUSIVE_INCLUSIVE
inTextWatcher
undonCheckedChanged
Spanne jedem Zeichen Hinzufügen
Entferne alle Strecken vor dem Hinzufügen g neue
Ich habe auch versucht, die Farbe aller Spannweiten zu drucken und es sieht aus wie die Spannweite richtig Zugabe, aber die EditText zeigt nicht die Farben nach diesen Spannweiten. Zum Beispiel:
char = 0 (T)
span 0 = Green
span 1 = Green
char = 1 (E)
span 0 = Green
span 1 = Green
char = 1 (S)
span 0 = Green
span 1 = Red
char = 2 (T)
span 0 = Green
span 1 = Red
Output: EditText shows "TEST" in all green color
Note: selecting the text and applying span shows correct colors in EditText
-> Layout/activity.xml
<EditText
android:id="@+id/edittext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textMultiLine|textNoSuggestions" />
-> MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
.......
mEdittext.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
spannable.setSpan(new ForegroundColorSpan(selectedColor), i, i, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
}
@Override
public void afterTextChanged(Editable editable) {
}
});
}
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
Spannable spannable = this.mEditText.getText();
int selStart = this.mEditText.getSelectionStart();
int selEnd = this.mEditText.getSelectionEnd();
if(group.getId() == R.id.radioGroupColor) {
int selected = 0;
switch (checkedId) {
case R.id.radioGreen:
selected = Color.GREEN;
break;
case R.id.radioRed:
selected = Color.RED;
break;
case R.id.radioBlue:
selected = Color.BLUE;
break;
}
if(selStart == selEnd) {
// There is no selection
} else {
spannable.setSpan(new ForegroundColorSpan(selected), selStart, selEnd, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
}
}
}
Überprüfen Sie diesen Beitrag https://StackOverflow.com/Questions/8043767/android-different-colours-for-different-characters-in-edittext – Jonik
Dank @Jonik Wie in meiner aktualisierten Frage erwähnt, habe ich bereits versucht, dass aber es funktioniert nicht. Ich kann HTML nicht verwenden, da die Textfarben vom Benutzer ausgewählt werden. – user427969