android:id //控件ID
android:text //控件顯示的文本
android:grivity //控件內容位置 top bottom left right center_vertical
android:textSize //字體大小
android:background //背景顏色(RGB,如:#aa0000)
android:width //控件寬度
android:height //控件高度
android:padding //控件內邊距大小
android:paddingLeft
android:paddingRight
android:paddingTop
android:paddingBottom
android:sigleLine //單行模式(true / false)
android:layout_weight //佔容器大小權重(比例)
2.TextView
文本瀏覽控件,相當於Label,用於顯示文本信息
android:id:控件ID
android:text:文本控件中的內容
3.Button:按鈕
android:id:控件ID(@+id/myTextView)
android:layout_width:fill_parent
android:layout_height:wrap_content
4.EditText:相當於TextBox,用於編輯文本信息
獲取文本框中的內容:txt.getText().toString();
5.Menu:菜單,點擊菜單鍵後彈出的選項菜單
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, 1, 1, R.string.exit); //組ID,項ID,排序ID,文字
menu.add(0, 2, 2, R.string.about);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId() == 1){
finish(); //表示結束應用程序
}
return super.onOptionsItemSelected(item);
}
6.單選框:RadioGroup / RadioButton
一個RadioGroup包括多個RadioButton,用於分組,與HTML一樣
rgroupSex.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (rbtnMale.getId() == checkedId) {
Toast.makeText(Control1Activity.this, "親,你是男的喔!", Toast.LENGTH_SHORT).show();
}
}
});
7.複選框:CheckBox
chkRead.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
Toast.makeText(Control1Activity.this, "親,我也喜歡讀書哈~", Toast.LENGTH_SHORT).show();
}
}
});
8.提示信息:Toast
一種消息提示的方式,會在屏幕下方中間顯示出一段小提示文本
Toast.makeText(Control1Activity.this, "親,我也喜歡讀書哈~", Toast.LENGTH_SHORT).show();
9.進度條:ProgressBar
//相關屬性
style="?android:attr/progressBarStyleHorizontal" //水平進度條
style="?android:attr/progressBarStyle" //圓形進度圖,無法顯示進行的狀態(百分比)
android:max="200" //進度條最大值,默認爲100
android:visibility="gone" //不可見
progeressBar.setMax(123); //進度條最大值
progeressBar.setVisibility(View.VISIBLE); //將進度條設置爲可見
progeressBar.setVisibility(View.GONE); //將進度條設置爲不可見
progeressBar.SetProgress(int); //進度條進度(顏色較深)
progeressBar.SetSecondaryProgress(int); //進度條第二進度(顏色較淺)
10.列表:ListView
//佈局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="false"
android:scrollbars="vertical"
android:padding="5px" />
</LinearLayout>
//列表需要繼承 ListActivity
public class Control2Activity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.control2);
// 組織一下數據源
ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
HashMap<String, String> hm1 = new HashMap<String, String>();
hm1.put("userName", "張三");
hm1.put("userAccount", "ZhengYongQiang");
list.add(hm1);
HashMap<String, String> hm2 = new HashMap<String, String>();
hm2.put("userName", "李四");
hm2.put("userAccount", "WengJiaXiong");
list.add(hm2);
HashMap<String, String> hm3 = new HashMap<String, String>();
hm3.put("userName", "王五");
hm3.put("userAccount", "LiLiXiang");
list.add(hm3);
// 綁定數據源
SimpleAdapter adapter = new SimpleAdapter(this, list,
R.layout.control2list,
new String[] { "userName", "userAccount" },
new int[] {R.id.lblUserName, R.id.lblUserAccount });
setListAdapter(adapter);
ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> av, View v, int pos, long id) {
Toast.makeText(Control2Activity.this, "親,你點擊了:" + id, Toast.LENGTH_SHORT).show();
}
});
}
}
11.Spinner的基本使用方法
1.佈局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Spinner
android:id="@+id/ddlCity"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
2.在string.xml創建一個數組
<string-array name="array_count">
<item>1</item>
<item>2</item>
</string-array>
3.代碼綁定
public class SpinnerActivity extends Activity {
Spinner ddlCity = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.spinner);
ddlCity = (Spinner) findViewById(R.id.ddlCity);
ddlCity.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
Toast.makeText(SpinnerActivity.this, "親,你選擇了" + adapterView.getItemAtPosition(position).toString(), 3000).show();
}
public void onNothingSelected(AdapterView<?> adapterView) {
Toast.makeText(SpinnerActivity.this, "親,你先一個吧!", 3000).show();
}
});
// 第一種方法:通過string.xml中的數組創建
// ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(SpinnerActivity.this,
// R.array.array_city, android.R.layout.simple_spinner_item);
// 第二種方法:通過一個List動態加載數據
List<String> list = new ArrayList<String>();
list.add("福州");
list.add("漳州");
list.add("廈門");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(SpinnerActivity.this, android.R.layout.simple_spinner_item, list);
// 設置下拉列表樣式
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
ddlCity.setAdapter(adapter);
ddlCity.setPrompt("請選擇城市:");
}
}
12.DatePicker和DatePickerDialog的基本使用
//佈局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/remindDate" />
<EditText
android:id="@+id/txtDate"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="date" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/remindTime" />
<EditText
android:id="@+id/txtTime"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="time" />
</LinearLayout>
</LinearLayout>
//編碼
public class PickerActivity extends Activity {
EditText txtDate = null;
EditText txtTime = null;
private static final int DIALOG_DATE_ID = 1;
private static final int DIALOG_TIME_ID = 2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.picker);
txtDate = (EditText) findViewById(R.id.txtDate);
txtTime = (EditText) findViewById(R.id.txtTime);
txtDate.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus)
showDialog(DIALOG_DATE_ID);
}
});
txtTime.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus)
showDialog(DIALOG_TIME_ID);
}
});
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.activity_list_item, REMIND_LIST);
txtRemind.setAdapter(adapter);
}
DatePickerDialog.OnDateSetListener onDateSetListener = new OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
txtDate.setText(year + "-" + (monthOfYear + 1) + "-" + dayOfMonth);
}
};
TimePickerDialog.OnTimeSetListener onTimeSetListener = new OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
txtTime.setText(hourOfDay + ":" + minute);
}
};
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_DATE_ID:
new DatePickerDialog(this, onDateSetListener, 2012, 1, 14).show();
break;
case DIALOG_TIME_ID:
new TimePickerDialog(this, onTimeSetListener, 13, 14, true).show();
break;
}
return super.onCreateDialog(id);
}
}
13.AutoCompleteTextView的基本使用
//佈局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/remindText" />
<AutoCompleteTextView
android:id="@+id/txtRemind"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
//編碼
public class PickerActivity extends Activity {
AutoCompleteTextView txtRemind = null;
private static final String[] REMIND_LIST = new String[] {
"鬧鐘模式", "節日提醒", "會議提醒", "特殊提醒",
"ClockRemind", "DayRemind", "MeetingRemind", "OtherRemind"
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.picker);
txtDate = (EditText) findViewById(R.id.txtDate);
txtTime = (EditText) findViewById(R.id.txtTime);
txtRemind = (AutoCompleteTextView) findViewById(R.id.txtRemind);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.activity_list_item, REMIND_LIST);
txtRemind.setAdapter(adapter);
}
}
14.ExpandableListActivity的基本使用方法
1.在佈局文件中聲明對象
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ExpandableListView
android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="false" />
<TextView
android:id="@id/android:empty"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="No Data" />
</LinearLayout>
2.在而已文件中聲明group的樣式group.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/lblExpListGroup"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="40dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:textSize="20dp" />
</LinearLayout>
3.在而已文件當中聲明子項的樣式child.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/lblExpListItem"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="50dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:textSize="16dp" />
</LinearLayout>
4.創建一個Activity,繼承ExpandableListActivity
5.爲group創建數據
6.爲child創建數據
7.綁定數據
public class ExpListActivity extends ExpandableListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.explist);
//列表組數據
List<Map<String, String>> groups = new ArrayList<Map<String, String>>();
Map<String, String> group1 = new HashMap<String, String>();
group1.put("name", "列表組1");
groups.add(group1);
Map<String, String> group2 = new HashMap<String, String>();
group2.put("name", "列表組2");
groups.add(group2);
//列表組1數據
List<Map<String, String>> item1 = new ArrayList<Map<String, String>>();
Map<String, String> item11 = new HashMap<String, String>();
item11.put("name", "列表組1子項1");
item1.add(item11);
Map<String, String> item12 = new HashMap<String, String>();
item12.put("name", "列表組1子項2");
item1.add(item12);
//列表組2數據
List<Map<String, String>> item2 = new ArrayList<Map<String, String>>();
Map<String, String> item21 = new HashMap<String, String>();
item21.put("name", "列表組2子項1");
item2.add(item21);
Map<String, String> item22 = new HashMap<String, String>();
item22.put("name", "列表組2子項2");
item2.add(item22);
//列表項數據
List<List<Map<String,String>>> items = new ArrayList<List<Map<String,String>>>();
items.add(item1);
items.add(item2);
//創建適配器
SimpleExpandableListAdapter adapter = new SimpleExpandableListAdapter(ExpListActivity.this,
groups, R.layout.explistgroup, new String[] { "name" }, new int[] { R.id.lblExpListGroup },
items, R.layout.explistitem, new String[] { "name" }, new int[] { R.id.lblExpListItem });
//綁定
setListAdapter(adapter);
}
}
15.SeekBar的基本使用方法
進度條,可滑動,設置音量、音樂進度等
1.在佈局文件中聲明
<SeekBar
android:id="@+id/sbar"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
2.定義一個監聽器
private class SeekBarListener implements SeekBar.OnSeekBarChangeListener{
@Override //滑塊改變觸發
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser){
System.out.println("Changed : " + progress);
}
@Override //滑塊開始改變時觸發
public void onStartTrackingTouch(SeekBar seekBar){
System.out.println("Start : " + seekBar.getProgress());
}
@Override //滑塊停止改變時觸發
public void onStopTrackingTouch(SeekBar seekBar){
System.out.println("Stop : " + seekBar.getProgress());
}
}
3.實例
seekBar = (SeekBar)findViewById(R.id.sbar);
seekBar.setMax(100); //設置最大進度
seekBar.setOnSeekBarChangeListener(new SeekBarListener()); //綁定事件
16.RatingBar的基本使用方法
打分條,幾個五角星,可以供用戶打分
1.在佈局文件中聲明
<RatingBar
android:id="@+id/rbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
android:stepSize="1.0" />
2.定義一個監聽器
private class RatingBarListener implements RatingBar.OnRatingBarChangeListener{
@Override
public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser){
System.out.println("rating : " + rating);
}
}
3.綁定
ratingBar.setOnRatingBarChangeListener(new RatingBarListener());