Android 中的幾個常用控制項

來源:互聯網
上載者:User

1、RadioButton

  RadioButton是選項按鈕,往往是在一組(多個)RadioButton中選中一個RadioButton,而這一組RadioButton是由一個RadioGroup進行管理。

  1所示,一個RadioGroup中包含兩個RadioButton,其Text內容分別為“女”和“男”。在RadioGroup中,同時只有一個RadioButton可以處於Checked狀態。


圖1 - 一個典型的RadioButton

如何控制一個RadioGroup中包含幾個RadioButton呢?

  我們可以在布局檔案中進行相關的配置,如果圖1所示的RadioGroup所在的布局檔案為main.xml。以下是main.xml檔案的一部分內容。由於在布局xml檔案的可視化視圖中,沒有找到RadioGroup視圖,所以需要自行在xml檔案添加相關的代碼;當然RadioButton視圖是可以通過可視化視圖進行添加的。

  通過在RadioGroup標籤中,添加RadioButton,我們就指定了該RadioGroup(id=genderGroup)包含了兩個RadioButton,其id分別為:femaleRadio 和 maleRadio。

 

<RadioGroup
android:id="@+id/genderGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<RadioButton
android:id="@+id/femaleRadio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/female"
/>
<RadioButton
android:id="@+id/maleRadio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/male"
/>
</RadioGroup>

如何對RadioGroup添加監聽事件?

  可能有人會問了,為什麼不對RadioButton添加監聽事件,而要對RadioGroup添加監聽事件呢?因為,處於同一個RadioGroup中的RadioButton,同時只能有一個被選中Checked,我們只需要對RadioGroup進行監聽,就可以實現對該組所有RadioButton的監聽。另一個重要的原因,大家查看一下RadioButton、RadioGroup在javadoc中的類說明。其中,RadioGroup實現了一個介面 RadioGroup.OnCheckedChangeListener, 通過該介面來實現對一組RadioButton的監聽工作。

設定監聽事件的代碼如下:

 

import android.widget.RadioGroup;
import android.widget.RadioButton;
import android.widget.Toast;

final RadioButton femaleButton = (RadioButton)findViewById(R.id.femaleRadio);
final RadioButton maleButton = (RadioButton)findViewById(R.id.maleRadio);
final RadioGroup genderGroup = (RadioGroup)findViewById(R.id.genderGroup);
genderGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
  @Override
  public void onCheckedChanged(RadioGroup group, int checkid) {
    // TODO Auto-generated method stub
    if (checkid == femaleButton.getId()) {
      Toast.makeText(MyActivity.this, "I am female.", Toast.LENGTH_SHORT).show();
    } else if (checkid == maleButton.getId()) {
      Toast.makeText(MyActivity.this, "I am male.", Toast.LENGTH_SHORT).show();
    } else {
      Toast.makeText(MyActivity.this, "Unknown", Toast.LENGTH_SHORT).show();
    }
  }
});

  在代碼中,監聽事件onCheckedChanged的第二個參數表示是當前被選中的RadioButton的Id。

 

2、CheckBox

  CheckBox是多選按鈕,它與其他的CheckBox不存在衝突的問題,可以同時選中兩個或兩個以上的CheckBox,因此在CheckBox中沒有分組的概念。如果需要對CheckBox添加監聽事件,則直接對CheckBox添加監聽事件。

如何添加CheckBox到一個活動中?

  這個就不用多說了,你可以直接編輯XML檔案進行添加;當然你也可以通過布局的可視化視圖,直接拖拽視圖,並設定其參數。

如何添加CheckBox的監聽事件?

  在添加事件之前,首先關注一下CheckBox的直接父類:

java.lang.Object
   ↳ android.view.View
     ↳ android.widget.TextView
       ↳ android.widget.Button
         ↳ android.widget.CompoundButton
           ↳ android.widget.CheckBox

  CompoundButton實現了一個介面函數CompoundButton.OnCheckedChangeListener。那CheckBox可以直接繼承其父類的介面,添加CompoundButton.OnCheckedChangeListener監聽函數。

final CheckBox checkBox = (CheckBox)findViewById(R.id.checkBox);
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

@Override
public void onCheckedChanged(CompoundButton checkBox, boolean checked) {
// TODO Auto-generated method stub
Toast.makeText(Helloworld.this, "I am a CheckBox", Toast.LENGTH_SHORT).show();
}
});

  監聽事件onCheckedChanged中的第二個參數checked,表示當前點擊的CheckBox是否為選中(Checked)狀態。

  注意:如果一個Activity中存在多個CheckBox,我們需要為每個CheckBox都各自添加一個監聽事件。


3、Toast

  Toast是一個短時間顯示的提示對話方塊。使用方法非常簡單:

public static Toast makeText (Context context, CharSequence text, int duration)

Since: API Level 1
Make a standard toast that just contains a text view.
Parameters

context The context to use. Usually your Application or Activity object.
text The text to show. Can be formatted text.
duration How long to display the message. Either LENGTH_SHORT or LENGTH_LONG

  給一個簡單的例子吧:  

Toast.makeText(Helloworld.this, "I am a CheckBox", Toast.LENGTH_SHORT).show();

  這句執行的操作是:在活動Helloworld的下方,顯示一串提示資訊,資訊的內容是“I am a CheckBox”,顯示的時間較短,過一會兒會自動消失。如果將第三個參數修改為"Toast.LENGTH_LONG",那麼顯示的時間會稍微長一些,但是最後依然會自動消失。

(未完,待續,敬請關注)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.