日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android开发CompoundButton抽象类控件类的使用UI之Radio、Check、Toggle

發布時間:2024/8/1 Android 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android开发CompoundButton抽象类控件类的使用UI之Radio、Check、Toggle 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本篇文章就講解了一下CompoundButton抽象類下的三個實現控件類的使用,在Android4.0之后,又新加入了一個控Switch,對它的 使用與之上介紹的三個控件類似,這里就不再詳細講解了。

前言

這篇文章講解一下Android平臺下,RadioButton、CheckBox以及ToggleButton三個控件的用法,因為這三個控件之 中都存在一個選中或是沒選中的狀態,所以放在一起講解。

這三個控件均是從Button之中間接繼承而來的,所以一些Button中的設置都是通用的,如圖文混排,動態修改顯示內容,因為之前已經對這些內 容進行了說明,如果不清楚朋友可以參見一下另外一篇文章:Android 開發UI之Button,所以這篇文章只是就這三個控件的常用方法進行簡要說明,并給出示例。

CompoundButton

RadioButton(單選按鈕)、CheckBox(復選按鈕)、ToggleButton(開關按鈕)都繼承自 android.widget.CompoundButton類,而CompoundButton又繼承自Button類,在這個類中封裝了一個 checked屬性,用于判斷是否被選中,這也是它與Button的不同,對其進行了擴展,這個屬性在這三個控件中的用法是一樣的。

一般checked屬性通過以下方式來設置與獲取:

  • android:checked/setChecked(boolean):設置是否被選中。
  • isChecked():獲取是否被選中。

RadioButton

RadioButton,為一個單選按鈕,一般配合RadioGroup一起使用,在同一RadioGroup內,所有的RadioButton的 選中狀態為互斥,它們有且只有一個RadioButton被選中,但是在不同的RadioGroup中是不相互影響的。

下面通過一個簡單的示例來說明一下,在示例中會存在兩個RadioButton,用于定義性別信息,當用戶選中了某個后,點擊按鈕,把選中的信息提 示到屏幕上。

布局代碼:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" > <TextView android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Gender:" /> <!-- 定義一個RadioGroup用于包裝RadioButton --> <RadioGroup android:id="@+id/gender"android:layout_width="wrap_content"android:layout_height="wrap_content" > <RadioButton android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="male" /> <RadioButton android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="female" /> </RadioGroup> <Button android:id="@+id/btnGender"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="選擇性別" /> </LinearLayout>
實現代碼:

package com.example.changebutton; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.Toast; public class RadioButtonActivity extends Activity { private RadioGroup group; private Button btnGender; @Overrideprotected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stubsuper.onCreate(savedInstanceState); setContentView(R.layout.radiobutton_layout); group = (RadioGroup) findViewById(R.id.gender); btnGender = (Button) findViewById(R.id.btnGender); btnGender.setOnClickListener(new View.OnClickListener() { @Overridepublic void onClick(View v) { // 獲取單選按鈕的選項個數int len = group.getChildCount(); String msgString = ""; for (int i = 0; i < len; i++) { //RadioGroup中包含的子View就是一個RadioButtonRadioButton radiobutton = (RadioButton) group.getChildAt(i); if (radiobutton.isChecked()) { //如果被選中,則break循環,并且記錄選中信息msgString = "You choose to be a "+ radiobutton.getText().toString(); break; } } if (msgString.equals("")) { Toast.makeText(RadioButtonActivity.this, "Please select a gender!", Toast.LENGTH_SHORT) .show(); } else { Toast.makeText(RadioButtonActivity.this, msgString, Toast.LENGTH_SHORT).show(); } } }); } }
實現效果:

CheckBox

CheckBox是一個復選按鈕,它的用法與RadioButton很像,但是與之不同的是,它可以多選,所以也無需用一個組控件包裹起來。

這里涉及了一動態添加UI控件的知識,在Android中動態增加控件一般有兩種方式:

  • 為需要操作的UI控件指定android:id屬性,并且在Activity中通過setContentView()設置需要查找的布局 文件。這樣才可以在Activity中,使用findViewById(int)方法找到待操作的控件。
  • 為需要操作的UI控件單獨創建XML文件,在Activity中使用動態填充的方 式:getLayoutInflater().inflate(int)的方式獲取到XML文件定義的控件。
  • 這里通過一個示例來說明CheckBox的使用,在示例中動態添加了CheckBox的選項,并且對其進行選中之后提示選中信息。上面兩種方式都用 用到,通過一個chooseMethod(boolean)區分。

    布局代碼:

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" android:id="@+id/checkLayout"> <!-- 這里只是定義了一個按鈕,其他的CheckBox控件在代碼中動態添加 --> <Button android:id="@+id/checkBtn"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="確定" /> </LinearLayout>

    如果使用動態填充的方式獲取CheckBox的話,需要添加一個CheckBox的XML文件,代碼如下:

    <?xml version="1.0" encoding="utf-8"?> <CheckBox xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content" > </CheckBox>

  • 實現代碼:
  • package com.example.changebutton; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.app.AlertDialog; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.CheckBox; import android.widget.LinearLayout; public class CheckBoxActivity extends Activity implements OnClickListener { private List<CheckBox> checkBoxs = new ArrayList<CheckBox>(); private Button checkBtn; @Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); chooseMethod(false); checkBtn = (Button) findViewById(R.id.checkBtn); checkBtn.setOnClickListener(this); } @Overridepublic void onClick(View v) { String s = ""; //循環cheackBoxsfor (CheckBox c : checkBoxs) { if (c.isChecked()) { //如果選中就添加選中結果到msg中。s += c.getText() + "\n"; } } if ("".equals(s)) { s = "您沒有選中選項!"; } //使用對話框彈出選中的信息new AlertDialog.Builder(this).setMessage(s) .setPositiveButton("Exit", null).show(); } private void chooseMethod(boolean b) { String[] checkboxText = new String[] { "You are student?", "Do you like Android?", "Do you have a girlfriend", "Do you like online shopping?" }; if (b) { //使用本文中提到的第一種方式,通過Id動態加載setContentView(R.layout.checkbox_layout); //獲取帶填充的布局控件LinearLayout linearLayout = (LinearLayout) this.findViewById(R.id.checkLayout); //根據數組,循環添加內容for (int i = 0; i < checkboxText.length; i++) { CheckBox checkbox = new CheckBox(this); checkBoxs.add(checkbox); checkBoxs.get(i).setText(checkboxText[i]); //把CheckBox加入到布局控件中linearLayout.addView(checkbox); } } else { //通過動態填充的方式,找到布局文件LinearLayout linearLayout = (LinearLayout) getLayoutInflater() .inflate(R.layout.checkbox_layout, null); for (int i = 0; i < checkboxText.length; i++) { //在通過動態填充的方式找到CheckBox的文件CheckBox checkbox = (CheckBox) getLayoutInflater().inflate( R.layout.cheackbox, null); checkBoxs.add(checkbox); checkBoxs.get(i).setText(checkboxText[i]); linearLayout.addView(checkbox); } //最后把這個布局文件加載顯示setContentView(linearLayout); } } }

  • 實現效果
  • ToggleButton

    ToggleButton,一個開關按鈕,有兩個狀態,大抵的用法與上面兩個控件一直,可以通過兩個屬性顯示不同狀態時,控件內顯示文字的內容不 同,屬性如下:

    • android:textOff/setTextOff(CharSequence):設置關閉時顯示內容。
    • android:textOn/setTextOn(CharSequence):設置打開時顯示內容。

    ToggleButton,這個控件有一個OnCheckedChangeListener()事件,當開關的狀態切換的時候會被觸發,其中需要傳 遞一個OnCheckedChangeListener接口的實現內,當被切換時,觸發其中的onCheckedChange()方法,可以在其中寫需要 實現的功能代碼。

    下面通過一個示例講解一下ToggleButton的使用,使用一個toggleButton控件,控制一個LinearLayout的布局排列方 式。

    布局代碼:

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" > <ToggleButton android:id="@+id/togBtn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:checked="true"android:textOff="橫向排列"android:textOn="縱向排列" /> <LinearLayout android:id="@+id/OriLayout"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" > <Button android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="btn1" /> <Button android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="btn2" /> <Button android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="btn3" /> </LinearLayout> </LinearLayout>

    實現代碼:

    package com.example.changebutton; import android.app.Activity; import android.os.Bundle; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.LinearLayout; import android.widget.ToggleButton; public class ToggleButtonActivity extends Activity { private ToggleButton togBtn; private LinearLayout linearLayout; @Overrideprotected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stubsuper.onCreate(savedInstanceState); setContentView(R.layout.toggle_layout); togBtn = (ToggleButton) findViewById(R.id.togBtn); linearLayout = (LinearLayout) this.findViewById(R.id.OriLayout); togBtn.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Overridepublic void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { //通過判斷是否選中,來設置LinearLayout的橫向縱向排列if (isChecked) { linearLayout.setOrientation(1); } else { linearLayout.setOrientation(0); } } }); } }
    實現效果:

    總結

    以上就講解了一下CompoundButton抽象類下的三個實現控件類的使用,在Android-4.0之后,又新加入了一個控件Switch, 對它的使用與之上介紹的三個控件類似,這里就不再詳細講解了。

    總結

    以上是生活随笔為你收集整理的Android开发CompoundButton抽象类控件类的使用UI之Radio、Check、Toggle的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 日本美女一区二区 | 香蕉爱爱视频 | www.在线观看视频 | 一级黄视频 | 骚黄网站 | 日韩色道 | www.国产高清 | 亚洲一线av| 欧美精品一区二区三区久久 | 男人日女人逼 | 怡红院一区二区 | 日本二三区| 色婷久久| 99riav国产精品视频 | 91免费观看网站 | 97精品人妻一区二区三区 | 欧美黄色短视频 | 国产一区二区在线免费观看 | 女优一区二区三区 | 欧美xxxx18国产 | 视频一区二区中文字幕 | 日本成人在线不卡 | 欧美a级在线观看 | 亚洲一区二区在线免费观看 | 国产精品成人自拍 | 东北少妇bbbb搡bbb搡 | 国产按摩一区二区三区 | 国产孕妇一区二区三区 | 你懂的在线观看视频 | 久久影院中文字幕 | 黄色精品一区 | 国产精品久久久久久久久免费软件 | 日韩av自拍偷拍 | 免费毛片a | 亚洲国产123| 亚洲一级av毛片 | 手机看片日韩久久 | 久久久久性色av无码一区二区 | 五月天婷婷激情 | 日本道在线观看 | 色一情一区二区三区四区 | 日韩激情啪啪 | 秋霞av网| 国产露脸国语对白在线 | 真人bbbbbbbbb毛片 | 麻豆视频一区 | 国产精品羞羞答答在线 | 欧美性生交大片免费看app麻豆 | 国产a视频免费观看 | 日韩一区二 | h视频在线免费看 | 亚洲午夜一区二区三区 | 欧美日韩黄色网 | 日少妇b | 欧美男女性生活视频 | www.久久.com| 国产美女无遮挡免费视频 | 在线观看网站污 | 深田咏美av在线 | 成人网站在线进入爽爽爽 | 国产在线xxx | 视频二区中文字幕 | 女生高潮视频在线观看 | 丝袜操 | jizz一区二区| 欧美一区二区三区激情视频 | 看黄色小视频 | 亚洲精品视频在线观看免费视频 | 国产一级全黄 | 黑人巨大精品欧美一区二区 | 日韩在线播放视频 | 日韩一区二区在线观看 | 91入囗| 婷婷综合另类小说色区 | 香蕉黄色片| 日韩一区二区中文字幕 | 超碰com| 国产农村妇女精品久久久 | 人人爱人人艹 | 欧洲一区二区三区 | 免费不卡av在线 | 亚洲h动漫| 亚洲一级免费视频 | 五月视频 | 永久免费成人 | 国产精品一区在线观看你懂的 | 欧洲亚洲激情 | 综合久久久久久久久久久 | 香蕉传媒 | 打屁股黄文 | 国产精品自拍视频一区 | 日本一区二区在线观看视频 | 经典av在线| 日本老妇性生活 | 亚洲熟女综合色一区二区三区 | 一级视频在线观看 | 依人在线视频 | 永久免费看成人av的动态图 | 国产精品久久久久久免费免熟 |