J'ai lutté avec ça pendant plus d'une semaine et j'ai finalement trouvé comment faire fonctionner ça!
Mon problème était que tout défilait comme un «bloc». Le texte lui-même défilait, mais comme un morceau plutôt que ligne par ligne. Cela n'a évidemment pas fonctionné pour moi, car cela couperait les lignes en bas. Toutes les solutions précédentes n'ont pas fonctionné pour moi, j'ai donc conçu ma propre solution.
Voici de loin la solution la plus simple:
Créez un fichier de classe appelé: 'PerfectScrollableTextView' à l'intérieur d'un package, puis copiez et collez ce code dans:
import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.TextView;
public class PerfectScrollableTextView extends TextView {
public PerfectScrollableTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setVerticalScrollBarEnabled(true);
setHorizontallyScrolling(false);
}
public PerfectScrollableTextView(Context context, AttributeSet attrs) {
super(context, attrs);
setVerticalScrollBarEnabled(true);
setHorizontallyScrolling(false);
}
public PerfectScrollableTextView(Context context) {
super(context);
setVerticalScrollBarEnabled(true);
setHorizontallyScrolling(false);
}
@Override
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
if(focused)
super.onFocusChanged(focused, direction, previouslyFocusedRect);
}
@Override
public void onWindowFocusChanged(boolean focused) {
if(focused)
super.onWindowFocusChanged(focused);
}
@Override
public boolean isFocused() {
return true;
}
}
Enfin changez votre 'TextView' en XML:
De: <TextView
À: <com.your_app_goes_here.PerfectScrollableTextView
maxLines
vous oblige sûrement à saisir un nombre arbitraire; ce n'est pas quelque chose qui fonctionnera pour chaque taille d'écran et taille de police? Je trouve plus simple de simplement l'envelopper avec unScrollView
, ce qui signifie que je n'ai pas besoin d'ajouter d'autres attributs ou codes XML (comme définir la méthode de déplacement).