'u seçmeyi devre dışı bırakma EditText
'u hiçbir metin seçilemiyorum ama kullanıcı tarafından hala okunabilir. bir özel bir OnTouchListener
oluşturulan ve sadece böyle ACTION_DOWN
olaylara yanıt ilk fonksiyonu arşivlemek için:EditText: kaydırmaya izin ver ancak
View.OnTouchListener otl = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
scroll_down_x = event.getX();
Layout layout = ((EditText) v).getLayout();
float x = event.getX() + mText.getScrollX();
int offset = layout.getOffsetForHorizontal(0, x);
if(offset>0)
if(x>layout.getLineMax(0))
mText.setSelection(offset); // touch was at end of text
else
mText.setSelection(offset - 1);
break;
}
return true;
}
};
mText.setOnTouchListener(otl);
Ama bu da kaydırma devre dışı gelmez. Sonra
case MotionEvent.ACTION_MOVE:
String input = ((EditText)v).getText().toString();
float width = ((EditText) v).getPaint().measureText(input);
float cwidth = ((EditText)v).getWidth();
//only scroll when the text is too long for the control
if (width >cwidth)
{
layout = ((EditText) v).getLayout();
x = event.getX() - scroll_down_x;
offset = layout.getOffsetForHorizontal(0, x);
mText.scrollBy((int) x, mText.getScrollY());
}
return true;
ile ACTION_MOVE
olayları reimplement
çalıştık Ama bu hiç çalışmıyor - kaydırma çok düzgün ve aynı zamanda çok yanlış değil. Peki, bu "kaydırma" kodunu nasıl düzeltebilirim veya EditText
sorusunu çözebilir, ancak hiçbir metin seçilemez ancak kullanıcı yine de kayıyor olabilir mi?
DÜZENLEME: Ayrıca, kullanıcı yine de imleç konumunu değiştirebilir. Eğer, bir TextView kullanabilirsiniz düzenlemek olmadan herhangi bir bilgi göstermek istiyorsanız
Bu, kullanıcının metni hala seçebildiği için sorunu gerçekten çözmez; yalnızca kopyalamak veya paylaşmak için komut düğmelerinin yok olması. – FlashTek
Android'in hangi sürümü çözümümüzü test ettiniz? – Gorio
Bu videoda çözümüme bakın https://vimeo.com/161860272 – Gorio