Pandangan Tatal (bar tatal)


Pengenalan kepada bahagian ini:

Bahagian ini membawakan sepersepuluh kawalan UI asas Android: ScrollView (bar skrol), atau kita harus memanggilnya Bar skrol menegak, sepadan dengan bar skrol mendatar yang lain: HorizontalScrollView, mari kita lihat dokumentasi rasmi dahulu Pautan: ScrollView, kita boleh melihat struktur kelas seperti berikut:

1.png

Hei, ternyata ia adalah bekas FrameLayout, tetapi berdasarkan ia Menambahkan menatal, membolehkan lebih banyak kandungan dipaparkan daripada yang mungkin!

Selain itu, anda hanya boleh meletakkan satu elemen kanak-kanak di dalam, yang boleh menjadi satu komponen atau hierarki kompleks yang dibalut dalam reka letak!

Secara amnya, untuk situasi di mana paparan mungkin tidak lengkap, kami boleh terus meletakkan satu pada lapisan luar reka letak: ScrollView atau HorizontalScrollView! Semudah itu~!


Sesetengah keperluan yang mungkin anda hadapi

Baiklah, jangan tolak dokumen satu persatu, mari kita bincangkan beberapa keperluan yang mungkin anda hadapi dalam pembangunan sebenar:

Satu lagi masalah biasa ialah: masalah bersarang ScrollView dan ListView Ini diletakkan dalam bab ListView. Mari kita jelaskan~


1 Tatal ke bawah:

Kami boleh terus menggunakan ScrollView yang menyediakan kami dengan: fullScroll() kaedah : <. 🎜 >

scrollView.fullScroll(ScrollView.

FOKUS_DOWN);Tatal ke bawah

scrollView.fullScroll(ScrollView.

FOKUS_UP);Selain itu, semasa menggunakan benda ini, berhati-hati dengan perkara tak segerak, iaitu selepas addView, ia mungkin tidak dipaparkan sepenuhnya. Jika anda memanggil kaedah ini secara langsung pada masa ini, ia mungkin tidak sah Dalam kes ini, anda perlu menulis pengendali anda sendiri untuk mengemas kini~

Contoh kod:

.

Rendering:

2.gif

Kod pelaksanaan:

Susun aturnya ialah agak mudah, jadi saya tidak akan menyiarkannya di sini, terus tampal MainActivity

MainActivity.java

.

kelas awam MainActivity melanjutkan AppCompatActivity melaksanakan View.OnClickListener {

    private Button btn_down;
    private Button<>            peribadi sendiri<>> scroll button private 

     peribadi; 🎜>    peribadi TextView txt_show;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         set  Paparan Kandungan(🎜                set    }


bindViews void private () { btn_down = (butang) findViewById (r.id.btn_down); >> btn_up.setOnClickListener(ini ); n");
        }
        txt_show.setText(sb.toString());

    }

    @Override
     pada C public (voil) >        suis (v.getId()) {
            kes R.id.btn_down:
                 scrollView.fullScroll( Scroll.<       ;  FOKUS >            kes R.id.btn_up:
scrollView.fullScroll(ScrollView.FOCUS_UP);
rehat;
}
}
}

Sudah tentu, sebagai tambahan kepada kaedah ini, anda juga boleh menggunakan cara penulisan lain yang lebih rumit:

skrol kekosongan statik awamToBottom(skrol Pandangan akhir, Pandangan akhir dalam) {
Pengendali mHandler = Pengendali baharu();
mHandler.post(Tatal Boleh Dijalankan baharu() {
larian void awam() {
if (scroll == null || inner == null) {
return;
}
int offset = inner.getMeasuredHeight() - scroll.getHeight();
                                                                                                                                                                                                                                                                                                                                                                                                                                                    ) {
Parameter


scrollTo
() ialah x, y tatal ke kedudukan x, y yang sepadan!
2. Tetapkan imej peluncur menatal

Ini lebih mudah:

Tegak
Gelangsar arah: android:

scrollbarThumbVertical

Mendatar Gelangsar arah: android:scrollbarThumbHorizontal
3. Sembunyikan peluncur Baiklah, yang ini Nampaknya tiada gunanya:


Terdapat dua kaedah: 1.android:scrollbars="none"

2.Tetapan kod Java: scrollview.setVerticalScrollBarEnabled(false);

4 🎜>Ini tidak memberikan kita kaedah yang boleh ditetapkan secara langsung. Kita perlu mewarisi ScrollView sendiri dan kemudian menulisnya semula. Kaedah melontarkan kekosongan awam (int velocityY):

@Override
public void fling(int velocityY) {
    super.fling(velocityY / 2);    //速度变为原来的一半
}

Ringkasan bahagian ini:

Baiklah, terdapat begitu banyak perkara ScrollView yang boleh saya fikirkan, kerana ini biasanya digunakan Tidak banyak, selalunya letak di luar sahaja. Di samping itu, masalah yang paling biasa adalah biasanya bersarang ScrollView dan ListView Jika anda mempunyai apa-apa untuk menambah, sila berasa bebas untuk bertanya, terima kasih~