Saya menampilkan teks dalam tampilan teks yang tampaknya terlalu panjang untuk masuk ke dalam satu layar. Saya perlu membuat TextView saya dapat digulir. Bagaimana saya bisa melakukan itu?
Ini kodenya:
final TextView tv = new TextView(this);
tv.setBackgroundResource(R.drawable.splash);
tv.setTypeface(face);
tv.setTextSize(18);
tv.setTextColor(R.color.BROWN);
tv.setGravity(Gravity.CENTER_VERTICAL| Gravity.CENTER_HORIZONTAL);
tv.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent e) {
Random r = new Random();
int i = r.nextInt(101);
if (e.getAction() == e.ACTION_DOWN) {
tv.setText(tips[i]);
tv.setBackgroundResource(R.drawable.inner);
}
return true;
}
});
setContentView(tv);
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).ScrollView
mengambil sebanyak yang dibutuhkan (misalnya melaluiandroid:fillViewport
atribut), atau Anda mengatur ukuran spesifik yang Anda inginkan. PenggunaanmaxLines
tidak boleh digunakan untuk mengatur ukuran elemen UI, sehingga tidak ada solusi.Ini adalah bagaimana saya melakukannya murni dalam XML:
CATATAN:
android:fillViewport="true"
dikombinasikan denganandroid:layout_weight="1.0"
akan membuat tampilan teks mengambil semua ruang yang tersedia.Saat mendefinisikan Scrollview, JANGAN tentukan
android:layout_height="fill_parent"
jika tidak, scrollview tidak berfungsi! (ini telah menyebabkan saya membuang satu jam sekarang! FFS).TIP PRO:
Untuk menggulir secara terprogram ke bawah setelah menambahkan teks, gunakan ini:
sumber
mTextView.getBottom()
, cukup gunakan metode inimScrollView.fullScroll(View.FOCUS_DOWN)
karena merupakan bagian dari API ScrollView. Lihat di sini dan di sini untuk info lebih lanjut.LinearLayout
atauScrollView
mungkin tidak berguna dalam contoh ini (saya menghapusLinearLayout
sepenuhnya). Ini juga memperingatkan bahwa untukTextView
, itu harusandroid:layout_height="wrap_content"
sesuai denganScrollView
. Peringatan ini mungkin karena 3 tahun yang telah berlalu sejak jawaban ini diposting. Apa pun yang terjadi, jawaban ini mendukung pengguliran dan<!--suppress AndroidLintUselessParent -->
atasScrollView
dalam file xml akan menangani peringatan itu.Semua yang benar-benar diperlukan adalah setMovementMethod (). Berikut ini contoh menggunakan LinearLayout.
File main.xml
File WordExtractTest.java
sumber
ScrollView
metode ini.StringBuilder
bukanString
... apa yang Anda miliki adalah sedikit boros.Buat tampilan teks Anda hanya menambahkan ini
sumber
Tidak perlu dimasukkan
Anda dapat melakukan pekerjaan Anda hanya dengan menambahkan:
Dan, letakkan kode ini di kelas Java Anda:
sumber
Anda juga bisa
TextView
denganScrollView
; atauScrollingMovementMethod.getInstance();
.sumber
Cara terbaik yang saya temukan:
Ganti TextView dengan EditText dengan atribut tambahan ini:
Tidak perlu membungkus dalam ScrollView.
sumber
ScrollView
adalah cara yang tepat untuk pergi.Sederhana. Beginilah cara saya melakukannya:
Sisi XML:
Sisi Jawa:
Bonus:
Agar tampilan teks gulir ke bawah saat teks mengisinya, Anda harus menambahkan:
ke file xml TextView. Ini akan menggulir ke bawah secara otomatis ketika lebih banyak teks masuk.
Tentu saja Anda perlu menambahkan teks menggunakan fungsi append alih-alih mengatur teks:
Saya menggunakannya untuk tujuan Log.
Saya harap ini membantu ;)
sumber
Ini adalah "Cara menerapkan ScrollBar ke TextView Anda", hanya menggunakan XML.
Pertama, Anda perlu mengambil kontrol Textview di file main.xml dan menulis beberapa teks ke dalamnya ... seperti ini:
Selanjutnya, tempatkan kontrol tampilan teks di antara tampilan scroll untuk menampilkan bilah gulir untuk teks ini:
Itu dia...
sumber
Ini akan memberikan teks bergulir halus dengan bilah gulir.
sumber
"Pro tip" di atas dari Someone Somewhere ( Membuat TextView dapat digulir pada Android ) berfungsi dengan baik, bagaimana jika Anda menambahkan teks secara dinamis ke ScrollView dan ingin secara otomatis menggulir ke bawah setelah menambahkan hanya ketika pengguna berada di bagian bawah ScrollView? (Mungkin karena jika pengguna telah menggulir ke atas untuk membaca sesuatu yang Anda tidak ingin mengatur ulang secara otomatis ke bawah selama menambahkan, yang akan mengganggu.)
Bagaimanapun, ini dia:
The mTextStatus.getLineHeight () akan membuatnya sehingga Anda tidak scrollToBottom () jika pengguna berada dalam satu baris dari ujung ScrollView.
sumber
Jika Anda ingin teks digulir dalam tampilan teks, maka Anda dapat mengikuti yang berikut:
Pertama, Anda harus subklas tampilan teks.
Dan kemudian gunakan itu.
Berikut ini adalah contoh dari tampilan teks subclass.
Sekarang, Anda harus menggunakannya dalam XML dengan cara ini:
Itu dia.
sumber
Tambahkan berikut ini di tampilan teks dalam XML.
Dan akhirnya, tambahkan
dalam file Java.
sumber
Saya tidak menemukan bergulir TextView untuk mendukung gerakan 'melemparkan', di mana ia terus bergulir setelah menjentikkan ke atas atau ke bawah. Saya akhirnya menerapkannya sendiri karena saya tidak ingin menggunakan ScrollView karena berbagai alasan, dan sepertinya tidak ada MovementMethod yang memungkinkan saya memilih teks dan mengklik tautan.
sumber
Di kotlin untuk membuat tampilan teks dapat digulir
dan juga menambahkan xml properti ini
sumber
Setelah selesai digulir, tambahkan baris ini ke baris terakhir tampilan saat Anda memasukkan sesuatu di tampilan:
sumber
Jika Anda tidak ingin menggunakan solusi EditText maka Anda mungkin lebih beruntung dengan:
sumber
Tambahkan ini ke tata letak XML Anda:
Dan dalam kode Anda harus menulis baris berikut:
sumber
Kode di bawah ini membuat tampilan teks gulir horizontal otomatis:
Saat menambahkan TextView ke penggunaan xml
Setel properti TextView berikut di onCreate ()
sumber
Anda dapat menggulirnya sekarang.
sumber
Gunakan seperti ini
sumber
Dalam kasus saya. Tata Letak Kendala.AS 2.3.
Implementasi kode:
XML:
sumber
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:
Terakhir, ubah 'TextView' Anda dalam XML:
Dari:
<TextView
Untuk:
<com.your_app_goes_here.PerfectScrollableTextView
sumber
Masukkan
maxLines
danscrollbars
di dalam TextView di xml.Kemudian dalam kode java.
textView.setMovementMethod(new ScrollingMovementMethod());
sumber
Saya punya masalah ini ketika saya menggunakan
TextView
di dalamScrollView
. Solusi ini berhasil bagi saya.sumber
kapan pun Anda perlu menggunakan ScrollView sebagai induk , dan Anda juga menggunakan metode gerakan gulir dengan TextView.
Dan Ketika Anda memotret ke mendatar perangkat Anda waktu itu terjadi beberapa masalah . (seperti) seluruh halaman dapat digulirkan tetapi metode gerakan gulir tidak dapat bekerja.
jika Anda masih perlu menggunakan ScrollView sebagai metode pergerakan orang tua atau gulir maka Anda juga menggunakan desc di bawah ini.
Jika Anda tidak memiliki masalah maka Anda menggunakan EditText bukan TextView
Lihat di bawah :
Di sini, EditText berperilaku seperti TextView
Dan masalah Anda akan teratasi
sumber
XML - Anda bisa menggunakan
android:scrollHorizontally
AtributApakah teks dibolehkan lebih lebar dari tampilan (dan karenanya dapat digulir secara horizontal).
Mungkin berupa nilai boolean, seperti "benar" atau "salah".
Prigramacaly -
setHorizontallyScrolling(boolean)
sumber
Coba ini:
sumber