Y a-t-il un moyen de définir un espace personnalisé (en pixels) entre les lettres à un editext? J'ai trouvé seulement comment définir des espaces entre les lignes, mais bot entre les lettres de la même rangée p>
4 Réponses :
Vous pouvez implémenter une personnalité textwatcher et ajouter x espaces tous les Temps l'utilisateur entre 1. P>
Pardonnez ma candeur, mais cette solution est horrible, fonctionne mais est horrible.
Je suis d'accord, c'était une réponse hors du haut de la tête, comment allez-vous accomplir cela?
Je devais le faire moi-même aujourd'hui, alors voici quelques mises à jour sur ce problème:
de API 21 Vous pouvez utiliser XML attribut Avant API 21, utilisez un TextWatcher avec le code suivant P> Android: LettresPaCing = "2" code> ou du code
myedittext.setletterspaçage (2); code> p>
private static final String LETTER_SPACING = " ";
private EditText myEditText;
private String myPreviousText;
...
// Get the views
myEditText = (EditText) v.findViewById(R.id.edt_code);
myEditText.addTextChangedListener(this);
...
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// Nothing here
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// Nothing here
}
@Override
public void afterTextChanged(Editable s) {
String text = s.toString();
// Only update the EditText when the user modify it -> Otherwise it will be triggered when adding spaces
if (!text.equals(myPreviousText)) {
// Remove spaces
text = text.replace(" ", "");
// Add space between each character
StringBuilder newText = new StringBuilder();
for (int i = 0; i < text.length(); i++) {
if (i == text.length() - 1) {
// Do not add a space after the last character -> Allow user to delete last character
newText.append(Character.toUpperCase(text.charAt(text.length() - 1)));
}
else {
newText.append(Character.toUpperCase(text.charAt(i)) + LETTER_SPACING);
}
}
myPreviousText = newText.toString();
// Update the text with spaces and place the cursor at the end
myEditText.setText(newText);
myEditText.setSelection(newText.length());
}
}
Utilisation de Méthodes associées: strong> p> P> Android: LettresPaçage Code> J'ai été capable d'ajouter un espacement entre les caractères dans un TextView
Ceci n'est disponible que dans le niveau API +21
J'ai utilisé cela et travaille pour la plupart des niveaux d'API sinon tous. p>
kerningviews strong> p>
fournit un ensemble de vues qui permet d'ajuster l'espacement entre les caractères de cette vue, aka, effet de kref. p>
https://github.com/aritraroy/kerningviews P> blockQuote>
Jetez un coup d'œil ici Stackoverflow.com/questions/1063268/...
Ce n'est pas une question IOS, objectif C, je dois y parvenir sur Android, comme vous pouvez le constater dans les balises de la question.
Désolé, je n'ai pas vu ça