RadioButton
單選元件若要真的能產生單選作用的話,除了自己用程式去控制之外,建議是把它們放在 RadioGroup 元件中:
檢視原始碼 XML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | ...以上省略 <RadioGroup android:id="@+id/sex" android:layout_width="300px" android:layout_height="wrap_content" android:orientation="horizontal" android:checkedButton="@+id/sex1" > <RadioButton android:text="男" android:id="@+id/sex1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <RadioButton android:text="女" android:id="@+id/sex2" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RadioGroup> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="點選的是..." android:id="@+id/btn" /> <TextView android:text="" android:id="@+id/result" android:layout_width="wrap_content" android:layout_height="wrap_content" /> ...以下省略 |
我們能透過 RadioGroup 的 checkedButton 來預設那個是先點選的。也可以透過 isChecked() 來判斷是否點選;而用 setChecked() 來設定點選的狀態:
檢視原始碼 Android
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.RadioButton; import android.widget.TextView; public class main extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final Button btn = (Button)findViewById(R.id.btn); btn.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { RadioButton sex1 = (RadioButton)findViewById(R.id.sex1); TextView txt = (TextView)findViewById(R.id.result); if(sex1.isChecked()){ txt.setText("你選擇的是男"); }else{ txt.setText("你選擇的就一定是女囉"); } } }); } } |
EditText
文字輸入元素最基本的功能就是提供使用者輸入使用:
檢視原始碼 XML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | ...以上省略 <EditText android:id="@+id/username" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="20px" /> <EditText android:id="@+id/pwd" android:layout_width="fill_parent" android:layout_height="wrap_content" android:password="true" /> ...以下省略 |
因為一開始有設定 password 的關係,所以等一下會看到這兩個輸入後的差別:
檢視原始碼 Android
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import android.app.Activity; import android.os.Bundle; import android.widget.EditText; public class main extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final EditText nameEdit = (EditText)findViewById(R.id.username); nameEdit.setText("abgne.tw"); final EditText pwdEdit = (EditText)findViewById(R.id.pwd); pwdEdit.setText("abgne.tw"); } } |
ImageButton
有別於 Button 的單調樣式,ImageButton 可加入各種背景圖片來當按鈕的圖示:
檢視原始碼 XML
1 2 3 4 5 6 7 8 | ...以上省略 <ImageButton android:id="@+id/ImageButton01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/calling_assist" /> ...以下省略 |
我們可透過 OnFocusChangeListener 來偵聽取得焦點的事件:
檢視原始碼 Android
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnFocusChangeListener; import android.widget.ImageButton; public class main extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final ImageButton imgBtn = (ImageButton)findViewById(R.id.ImageButton01); imgBtn.setOnFocusChangeListener(new OnFocusChangeListener(){ @Override public void onFocusChange(View v, boolean hasFocus) { // 當 ImageButton 取得焦點時 if(hasFocus){ imgBtn.setImageResource(R.drawable.ninja_android); }else{ imgBtn.setImageResource(R.drawable.calling_assist); } } }); } } |
只有當用 Trackball 來取得焦點時才會觸發事件喔!若是要做到點擊觸發的話,則要偵聽 OnClickListener
想請問一下
在宣告物件的時候存取修飾子 final 跟 private 有什麼差別!?
宣告成final是不能被改變
private是同一類別下可以去呼叫
因為我習慣用private
你..不是已經自己回答完了嗎!?
所以實際使用上是沒什麼差別的囉?
看你的需求來用哩..
final 表示此變數值只能設定一次, 若用在 class 則無法被繼承
若在搭配 static 的話, 就變成是常數囉~
恩恩 那我瞭解了
因為我看過幾本書有的會宣告private有的宣告public
但實際使用上好像沒什麼差別
所以有這個疑問