Bunun gibi bir yorum yaptığımı varsayalım: Merhaba Andrea bunu kontrol et ..... Bu yorumda Andrea'yı vurgulamak istiyorum ancak her ne zaman değiştirdiğimi Andrea değeri veya sözcüğün bir karakterini sildiğimde span değiştiğinde sorun, spannableString.setSpan(new StyleSpan(Typeface.BOLD), indexOfAt, highlightName.length() + indexOfAt, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
kullanıyorum, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
kelimelerin ortada ve sözcüklerin silinmesini kabul ediyor, kullanıcı kelimeyi değiştirdiğinde açıklığı nasıl kaldırabilirim veya kelimenin bir karakterini silmek mi?Yayılma alanı içindeki metin değiştirildiğinde Android cihazını değiştirin
cevap
Düzenleme metninde Metin değişikliği izlemeniz gerekir. EditText
varsayarsak, kullandığınız bu cevap yararlı olacaktır commentEditText
commentEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
String comment = editable.toString();
if (comment.indexOf('@') != -1) {
//Asumming the name string
String name = "Andrea";
int atIndex = comment.indexOf('@');
int endIndex = atIndex + name.length() + 1;
if (endIndex == -1 || endIndex > editable.length()) {
endIndex = editable.length();
}
if (comment.toLowerCase().contains(name.toLowerCase())) {
editable.setSpan(new StyleSpan(Typeface.BOLD), atIndex, endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
} else {
StyleSpan[] spannable = editable.getSpans(atIndex, endIndex, StyleSpan.class);
if (spannable != null && spannable.length > 0) {
for (int i = 0; i < spannable.length; i++) {
editable.removeSpan(spannable[i]);
}
}
}
}
}
});
Sen aldıktan sonra bu yöntemde bir geri arama alacak basitçe
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
//Do some magic here
}
üzerine Şimdi her kullanıcı türleri yukarıda ulaşmak istediğiniz textview TextWatcher ekleyin ve bunun için TextWatcher deneyin ya da herhangi bir karakteri siler edebilirsiniz yayınınızı sıfırlayabilirsiniz.
, temel düşüncenin, burada elde edilen metin değişikliği için bir geri arama alması olduğunu açıkladı. –
SpannableString
'u kullanıyorsanız, her şeyi her değişiklikte yeniden oluşturmanız gerekir.
Genişlikleri kaldırabilirsiniz ancak kaynağı (yorum) değiştiremezsiniz, çünkü SpannableString
kaynak metin değişmezdir.
SpannableString
'u oluşturduğunuz yorumun tüm değişikliklerini öneririm, adları arayın ve onları etiketleyin, ardından yorum değiştiğinde, aynı şeyi yeni bir SpannableString
ile tekrarlayın. Performans sorunları olmayacaktır çünkü yorumlar küçüktür.
Değiştirilebilir bir nesneye sahip olmak istiyorsanız, SpannableStringBuilder
'u kullanabilirsiniz, ancak daha karmaşıktır ve buna gerek yoktur.
Bazı kodları paylaşırsanız daha fazla yardımcı olabilirim – MaanooAk
- 1. Android: FragmentActivity içindeki Sekmenin metin rengini değiştirin
- 2. Bir model değiştirildiğinde, değişkeni değiştirin
- 3. Div ve aynı yüksekliğe sahip yayılma alanı
- 4. Bir ListView içindeki bir TextView'un metin rengini dinamik olarak değiştirin.
- 5. Esnek: Metin Alanı Değiştirme
- 6. Junit4 Android test alanı metin testi
- 7. Bir öğenin içindeki bir metin dizesini bulun ve bazı yayılma etiketlerini yuvarlak kaydırın
- 8. Android: Simge değiştirildiğinde bildirim gönderilip gösterilmiyor
- 9. Değiştirildiğinde rengi değiştir
- 10. JavaFx Metin Alanı ayarlanmış metin
- 11. Yığın Görünümü İçindeki Metin Alanlarını Okuma
- 12. C# içindeki semboller arasındaki sembolleri değiştirin. #
- 13. contenteditable div içindeki seçili metni değiştirin
- 14. Dize içindeki tüm çift tırnak işaretlerini değiştirin
- 15. Metin girişi seçim alanı
- 16. Kıvılcım JSON metin alanı
- 17. Metin alanı nasıl şekillendirilir?
- 18. Android - strings.xml değerini değiştirin
- 19. Android varsayılan webview'ini değiştirin
- 20. Apache Solr dize alanı veya metin alanı?
- 21. ASP.NET GridView'ın çağrı cihazını
- 22. Göndermeden önce bir giriş alanı değiştirin
- 23. Arduino'da dize içindeki metin eşleştirmesi
- 24. İçindeki metin ile tkinter progressbar
- 25. Sorgu içindeki metin çoğaltılıyor - Node.js
- 26. Android: Çoklu hat için dikey hizalama EditText (Metin alanı)
- 27. EditText düz metin - Android
- 28. Sim kartı değiştirildiğinde etkinlik
- 29. Groovy yayılma noktası operatörü
- 30. satırlı yayılma-davranıyor elemanları
bir keman veya kod olarak adlandırılır. – Shuddh