2012年2月2日 星期四

【Android】Widget 介紹


Button
<Button
android:id="@+id/Button01"
android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="@string/app_add"
     />

介紹一些可能常用的屬性:
android:enabled=”[true|false]” 表示按鈕是否有效(能不能按)
android:onClick="[Your method name]" 表示按鈕按下後的觸發事件

在之前的程式裡,我們要處理Button的時候都是在Activity建立一個OnClickListener 並實作 onClick(View) 方法來解決按鈕按下後要做的事情
例如:

button.setOnClickListener(new OnClickListener(){
              public void onClick(View view) {
                  // TODO Auto-generated method stub
                  // Your code           }
        });


這樣有時候當程式碼多的時候是蠻不好看也不好維護的,

所以可以直接在layout下設定Buttonandroid:onClick屬性,

並在對應的Activity新增一個方法
public class Activity01 extends Activity{
    public void buttonClickAction(View button){ 
        ... ...
    }
}

如此一來你也不用implements OnClickListener介面。

至於如果想要在Button上增加圖片,那麼可以採用ImageButton

並透過android:src="@drawable/xxx" 設定圖片來源。

另外在額外介紹一個ToggleButton

這是一個on/off得按鈕,它如同一般的Button一樣有OnClickListener事件

且額外還有一個OnCheckedChangeListener事件可實作
tglbtn.setOnCheckedChangeListener(new ToggleButton.OnCheckedChangeListener() { 

    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)   {

        if (isChecked) {

            Log.d("tglbtn", "This checkbox is: checked");

        } else {

            Log.d("tglbtn", "This checkbox is: unchecked");

        }

    })

}

如果想要透過程式讓ToggleButton設定成勾選狀態,可透過:

tglbtn.setChecked(true); tglbtn.toggle();

至於ToggleButtonlayout,如下所示:
<ToggleButton android:id="@+id/ToggleButton01"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
        android:textOn="Button On"
        android:textOff="Button Off"/>

EditText 
類似HTML <input type=”text” />
<EditText
     android:id="@+id/EditText03"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:singleLine="false" />

android:singleLine=”[true|false]” 表示是否只能輸入一行
android:capitalize=”[0|1|2|3]” 表示將字母轉成大寫

Constant
Value
描述
none
0
不自動轉換
sentences
1
轉換每個句子的第一個字母
words
2
轉換每個單字的第一個字母
characters
3
轉換每個單字的每個字母

android:digits=”” 設定只允許輸入哪些字元。
android:editable=”[true|false]” 設定是否可編輯。
android:hintText=”[string]” 為空時,所要表示的訊息。
android:password 表示為密碼格式。

CheckBox
<CheckBox
      android:id="@+id/mycheckbox"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="This is a checkbox"
      />
CheckBox 有點類似ToggleButton,同樣會有OnCheckedChangeListener事件可實作,在Java 程式中要檢查該CheckBox是否有勾選,可以用isCheck()函式。
如果要設定CheckBox的勾選狀態可以使用setChecked()或是toggle()

RadioBox
<RadioGroup android:id="@+id/RadioGroup01"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:orientation="horizontal"
        >
          <RadioButton android:id="@+id/RadioButton01"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:text="@string/app_man"
               />
          <RadioButton android:id="@+id/RadioButton02"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:checked="true"
               android:text="@string/app_female"/>
         </RadioGroup>

如上,RadioBox通常會組成一個RadioGroup
而常用的方法一樣也是有OnCheckedChangeListener,看以下範例:

public void onCheckedChanged(RadioGroup group, int checkedId){
           int radioId = myradiogroup.getCheckedRadioButtonId();
           if(radioId < 0 ) //表示沒有任何RadioButton被選
               myTextView.setText("No Radio Button is selected");
           else{
               RadioButton rb = (RadioButton)group.findViewById(radioId);
               myTextView.setText("radio button: " + rb.getText());
           }
}

RadioGroup透過 check()方法將群組內的某個RadioButton設置為勾選
例如:rGroup.check(R.id.RadioButton02);
或是透過clearCheck()清除所有選擇的項目。

沒有留言:

張貼留言