Ho lottato con questo per oltre una settimana e finalmente ho capito come farlo funzionare!
Il mio problema era che tutto scorreva come un "blocco". Il testo stesso stava scorrendo, ma come un pezzo piuttosto che riga per riga. Questo ovviamente non ha funzionato per me, perché avrebbe tagliato le linee in fondo. Tutte le soluzioni precedenti non funzionavano per me, quindi ho creato la mia.
Ecco di gran lunga la soluzione più semplice:
Crea un file di classe chiamato: "PerfectScrollableTextView" all'interno di un pacchetto, quindi copia e incolla questo codice in:
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;
}
}
Finalmente cambia il tuo 'TextView' in XML:
A partire dal: <TextView
Per: <com.your_app_goes_here.PerfectScrollableTextView
maxLines
richiede di inserire un numero arbitrario; questo non è qualcosa che funzionerà per ogni dimensione dello schermo e dimensione del carattere? Trovo più semplice racchiuderlo in aScrollView
, il che significa che non devo aggiungere ulteriori attributi o codice XML (come impostare il metodo di movimento).