Android學習筆記 - 控件篇

1.控件常用的屬性
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());


 






發佈了36 篇原創文章 · 獲贊 5 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章