Saya berjuang dengan ini selama lebih dari seminggu dan akhirnya menemukan cara untuk membuat ini bekerja!
Masalah saya adalah semuanya akan bergulir sebagai 'blok'. Teks itu sendiri sedang bergulir, tetapi sebagai potongan daripada baris demi baris. Ini jelas tidak berhasil untuk saya, karena akan memotong garis di bagian bawah. Semua solusi sebelumnya tidak berhasil untuk saya, jadi saya membuat sendiri.
Berikut ini solusi termudah:
Buat file kelas bernama: 'PerfectScrollableTextView' di dalam sebuah paket, lalu salin dan tempel kode ini di:
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;
}
}
Terakhir, ubah 'TextView' Anda dalam XML:
Dari: <TextView
Untuk: <com.your_app_goes_here.PerfectScrollableTextView
maxLines
mengharuskan Anda untuk memasukkan nomor arbitrer; ini bukan sesuatu yang akan bekerja untuk setiap ukuran layar dan ukuran font? Saya merasa lebih mudah untuk hanya membungkusnya denganScrollView
, artinya saya tidak perlu menambahkan atribut atau kode XML lebih lanjut (seperti mengatur metode pergerakan).