J'essaye de créer un EditText
dans lequel aucun texte ne peut être choisi, mais qui peut toujours être examiné par l'utilisateur. Pour archiver la première fonction a créé une coutume OnTouchListener
et seulement répondu aux ACTION_DOWN
événements comme celui-ci:EditText: permet de faire défiler mais de désactiver la sélection
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);
Mais cela ne désactivera également le défilement. Je l'ai ensuite essayé de reimplement
les événements ACTION_MOVE
avec
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;
Mais cela ne fonctionne pas du tout - le défilement est pas très lisse et très imprécis. Alors, comment puis-je améliorer ce "scrolling" -code ou résoudre le problème d'un EditText
dans lequel aucun texte ne peut être sélectionné mais l'utilisateur peut encore faire défiler?
EDIT: L'utilisateur doit également être en mesure de changer la position du curseur.
Cela ne résout pas vraiment le problème car l'utilisateur est toujours capable de sélectionner des parties du texte - seuls les boutons de commande pour le copier ou le partager ont disparu. – FlashTek
Quelle version d'Android avez-vous testé ma solution? – Gorio
Regardez ma solution dans cette vidéo https://vimeo.com/161860272 – Gorio