RadioButton(butang radio)&Kotak Semak(kotak semak)


Pengenalan kepada bahagian ini:

Apa yang dibawa oleh bahagian ini kepada anda ialah RadioButton dan Kotak Semak dalam kawalan UI asas Andoird; Izinkan saya bercakap tentang kandungan yang akan diterangkan dalam bahagian ini: RadioButton dan Kotak Semak
1. Pemprosesan acara
4 teks Kedudukan relatif kepada kotak pilihan;
5 Ubah suai jarak antara teks dan kotak pilihan

Malah, kedua-dua kawalan ini adalah serupa dalam banyak cara, kecuali untuk tunggal. pemilihan dan pilihan berbilang , pengendalian acara, segala-galanya adalah serupa! Terdapat juga masalah ketidakselarasan Kotak Semak pada ListView Kami akan membincangkan masalah ini dalam bab ListView. Selesai, okay, mari mulakan bahagian ini~ API dokumentasi rasmi untuk bahagian ini: RadioButton;

1.
Seperti dalam tajuk, hanya satu butang radio boleh dipilih, jadi kita perlu meletakkan RadioButton ke dalam kumpulan butang RadioGroup untuk mencapai Fungsi radio! Mula-mula, biasakan diri anda dengan cara menggunakan RadioButton, contoh mudah pemilihan jantina: Selain itu, kita boleh menetapkan atribut orientasi untuk RadioGroup luar dan kemudian menetapkan susunan RadioButtons, sama ada menegak atau mendatar~


Rendering:

PS: Telefon pengarang ialah Android 5.0.1 Berbanding dengan versi lama RadioButton, RadioButton di sini kelihatan lebih baik sedikit~

Layout. kod Seperti berikut: 1.png

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android: orientation="vertical"               android =".MainActivity" >

    <Paparan Teks
        android:layout_width="wrap_content"
        android:layout_height="wrap_content >                                                                            性别"
Android: textSize = "23dp"
/& gt;

& lt; RadioGroup
android: id = "@+id/radiogroup"
android: Layout_width = "wrap_content"
android:layout_height="wrap_content"
         android:orientation="horizontal">

        <RadioButton
             android:t        android:t                     android                           android :layout_width=" wrap_content"
             android:layout_height="wrap_content"
              android:text="男"
                                                android tan
            android:id ="@+id/btnWoman"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
                    android                   android lt;/RadioGroup>

    <Butang
        android:id="@+id/btnpost"
android:layout_width = "wrap_content"
Dapatkan nilai yang dipilih:


Terdapat dua kaedah di sini,

Pertama ialah menetapkan pendengar acara setOnCheckChangeListener untuk RadioButton

Kod contoh adalah seperti berikut:

RadioGroup radgroup = (RadioGroup) findViewById(R.id.radioGroup> /<🎜); /Cara pertama untuk mendapatkan nilai butang radio Kaedah

//Tetapkan pendengar untuk radioGroup: setOnCheckedChanged()

radgroup.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedGroup kumpulan, int checkedId) {

RadioButton radbtn = (RadioButton) findViewById(checkedId);
Toast.makeText(getApplicationContext(), "Nilai kumpulan butang telah berubah, anda pilih" + radbtn.getText(), Toast .LENGTH_L ONG).show();
        }
        });

Rendering operasi: 2.png3.png

PS: Satu lagi perkara yang perlu diingat ialah menambah id pada setiap RadioButton, jika tidak, fungsi butang radio akan berkuat kuasa! ! !

Kaedah kedua ialah mendapatkan nilai butang radio yang dipilih dengan mengklik butang lain, kita juga boleh mendapatkannya secara langsung 🎜>

Kod contoh adalah seperti berikut:

Butang btnchange = (Button) findViewById(R.id.btnpost);
RadioGroup radgroup = (RadioGroup) findViewById( R.id.radioGroup);
//Tetapkan pendengar untuk radioGroup: setOnCheckedChanged()
btnchange.setOnClickListener(new OnClickListener() {
@Override
public void on Click(View v) {
untuk (int i = 0;i 🎜> Toast.makeText(getApplicationContext (), "Klik butang hantar untuk mendapatkan pilihan anda:" + rd.getText(), Toast.LENGTH_LONG).show();
                                              }
}
      });

Menjalankan pemaparan:

4.png

Analisis kod: Di sini kami menetapkan butang hantar A setOnClickListener pendengar acara, setiap kali ia diklik, ia merentasi RadioGroup untuk menentukan butang yang dipilih Kami boleh mendapatkan maklumat yang berkaitan RadioButton melalui kaedah berikut!

  • getChildCont( ) mendapat bilangan butang radio dalam kumpulan butang; >(i): Dapatkan butang radio kami berdasarkan nilai indeks

  • disemak( ): Tentukan sama ada butang itu ditanda

  • 2) Kotak Semak (CheckBox)

  • Sama seperti kotak semak, anda boleh memilih berbilang pilihan pada masa yang sama Bagi mendapatkan nilai yang dipilih, terdapat juga dua cara : 1. Tambahkan acara untuk setiap Kotak Semak: setOnCheckedChangeListener 2. Buat butang, dan selepas mengkliknya, nilai setiap kotak semak: isChecked();

Menjalankan rendering:

Kod pelaksanaan: 5.gif

kelas awam MainActivity melanjutkan AppCompatActivity melaksanakan View.OnClickListener,CompoundButton.OnCheckedChangeListener{

    pribadi CheckBox cb_one;      private;<  🎜    peribadi CheckBox cb_three;
    pribadi Butang btn_send

@Override
dilindungi void onCreate (bundle savedInstanceState) {
super.oncreate (savedInstanceState); (CheckBox) findViewById(R.id.cb_one);
        cb_two = (CheckBox) findViewById(R.id.cb_two);
        cb.three     cb.three = findViewById(R.id.cb_two);
        btn_send = (Button) findViewById(R.id.btn_send);

        cb_one.setOnCheckedChangeListen er(this);
        cb_two.setOn (T                      Dengar CheckedChangeListener(ini);
        btn_send .setOnClickListener(this);

    }

    @Override
     public void onCheckedChange d(Compound Button compoundButton, boolean b)                                                                                                                                                                    b .makeText( this,compoundButton.getText().toString(),Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onClick(Lihat paparan) {<🎜 memilih >    "";
        jika(cb_one.isChecked())choose += cb_one.getText().toString() + "";
        if(cb_two.isChecked())choose +(o.cb_tx) toString() + "";
        if(cb_three.isChecked())choose += cb_three.getText().toString() + "";
        Toast.makeText,(this.HOR,Tchoose) tunjukkan();
    }
}


2. Sesuaikan kesan klik

Walaupun RadioButton dan Kotak Semak selepas 5.0 kelihatan lebih baik sedikit daripada versi lama, bagi kami Anda mungkin masih tidak menyukainya atau memerlukannya, jadi anda perlu klik pada kesannya sendiri! Ia sangat mudah untuk dilaksanakan. Mula-mula tulis adat Sumber pemilih, menetapkan imej pensuisan apabila dipilih dan tidak dipilih~!

Rendering adalah seperti berikut:

6.gif

PS: Bahan di sini agak kecil...

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_enabled="true"
android:state_checked="true"
android:drawable="@mipmap/ic_checkbox_checked"/>
<item
android :state_enabled="true"
android:state_checked="false"
android:drawable="@mipmap/ic_checkbox_normal" />
</selector>

Tulis Selepas itu, kita mempunyai dua cara untuk menyediakannya, atau kita boleh katakan satu! Anda akan tahu selepas anda melihatnya~

①android:button atribut ditetapkan kepada selctor yang dinyatakan di atas

android:button="@drawable/rad_btn_selctor"

② Tentukan atribut dalam gaya, dan kemudian tetapkannya melalui atribut gaya android Mula-mula tambahkan kod berikut pada gaya:

<style name="MyCheckBox" parent=". @android:style/Widget. "@style/MyCheckBox"


3. Tukar kedudukan relatif teks dan kotak pilihan

Ini juga sangat mudah untuk dilaksanakan. Adakah anda masih ingat drawableXxx yang kami gunakan semasa kami mempelajari TextView sebelum ini? Untuk mengawal kedudukan kotak pilihan, hanya dua langkah! Tetapan:

Langkah 1. android:button="@null"
Langkah 2. android:drawableTop="@android:drawable/btn_radio"
Sudah tentu kita boleh menggantikan drawableXxx dengan kesan yang kita suka!


4 Ubah suai jarak antara teks dan kotak pilihan

Kadangkala, kita mungkin perlu melaraskan jarak antara teks dan kotak pilihan untuk. jadikan mereka kelihatan sedikit Tidak begitu sesak, kita boleh:
1. Gunakan android:paddingXxx = "xxx" untuk mengawal jarak
2 Dalam kod Java, adalah lebih baik untuk mengira paddingLeft secara dinamik

Kod sampel adalah seperti berikut: <. 🎜>

rb.setButtonDrawable(R.drawable.rad_btn_selctor);
int rb_paddingLeft = getResources().getDrawable(R.mipmap.ic_checkbox_checked).getIntrinsicWidth()+5 rb.setPadding( rb_paddingLeft, 0, 0, 0);

Ringkasan bahagian ini:

Baiklah, itu sahaja untuk RadioButton dan Kotak Semak, jika anda ada apa-apa untuk ditulis Jika anda mendapat sesuatu yang salah atau buruk, atau jika anda mempunyai sebarang cadangan yang baik, sila nyatakan. Bersyukur sangat~Terima kasih...