一、能夠使某些資源文件或UI組件可重用android
<include layout="@layout/other"/> git
二、定義一個文本編輯框,使用絕對定位數組
android:layout_x="20dip"網絡
android:layout_y="80dip"app
三、控件位置 ide
android:layout_centerHorizontal 控制該組件是否位於佈局容器的水平居中位置佈局
android:layout_centerVertical 控制該組件是否位於佈局容器的垂直居中位置測試
android:layout_centerInParent 控制該組件是否位於佈局容器的中央位置字體
android:layout_alignParentBottom 控制該組件是否與佈局容器底端對齊this
android:layout_alignParentLeft 控制該組件是否與佈局容器左邊對齊
android:layout_alignParentRight 控制該組件是否與佈局容器右邊對齊
android:layout_alignParentTop 控制該組件是否與佈局容器頂端對齊
android:layout_toRightOf 控制該組件位於給出的ID組件的右側
android:layout_toLeftOf 控制該組件位於給出的ID組件的左側
android:layout_above 控制該組件位於給出的ID組件的上方
android:layout_below 控制該組件位於給出的ID組件的下方
android:layout_alignTop 控制該組件與給出的ID組件的上邊界對齊
android:layout_alignBottom 控制該組件與給出的ID組件的下邊界對齊
android:layout_alignLeft 控制該組件與給出的ID組件的左邊界對齊
android:layout_alignRight 控制該組件與給出的ID組件的右邊界對齊
4、設置單元格內的控件的形狀(可壓縮,可伸長,可隱藏等)
android:shrinkColumns 設置該列的全部單元格的寬度能夠被收縮,以保證該表格可以適應父容器寬度
android:stretchColumns 設置該列的全部單元格的寬度能夠被拉伸,以保證組件能徹底填滿表格空餘空間
android:collapseColumns 設置該列的全部單元格會被隱藏
五、TextView屬性設置
設置字體爲30pt android:textSize="30pt"
設置中間省略 android:singleLine="true" android:ellipsize="middle"
對郵件增長連接 android:autoLink="email" android:autoLink="email"
測試密碼框 android:password="true"
繪製一張圖片 android:drawableLeft="@drawable/icon"
六、EditText屬性設置
當前組件在獲得焦點的時候,自動選取該組件內的全部的文本內容
android:selectAllOnFocus="true"
當前組件只能輸入數字 android:phoneNumber="true"
當前組件顯示的提示信息,被選中時,內容自動被清空
android:hint="@string/edtPhone
七、按鈕以及屬性(Button……)
普通文字按鈕 android:background=""
普通圖片按鈕 <ImageButton android:src=""/>
按下時顯示不一樣圖片的按鈕(利用配置文件解決即,button_selector.xml, android:src="@drawable/button_selector" )
Button_selector.xml:指定按鈕按鈕下時的圖片
<item android:state_pressed="true"
android:drawable="@drawable/red"
/>
指定按鈕鬆開時的圖片:
<item android:state_pressed="false"
android:drawable="@drawable/purple"
/>
帶文字的圖片按鈕 android:background="@drawable/button_selector"
android:text="@string/btnImage"
八、單選按鈕和多選按鈕(RadioGroup、CheckBox)
定義一組單選框 <RadioGroup android:orientation="vertical"
android:layout_gravity="center_horizontal">
定義一個單選框 <RadioButton android:text="@string/male"/>
定義一個垂直的線性佈局
<LinearLayout android:layout_gravity="center_horizontal"
定義三個複選框
<CheckBox android:text="@string/red"
android:checked="true" /> ……
九、帶相似開關式的按鈕(ToggleButton)
定義一個ToggleButton按鈕: <ToggleButton
android:textOff="@string/layoutH"
android:textOn="@string/layoutV" />
定義一個能夠動態改變方向的線性佈局:
TestActivity:
ToggleButton tb = (ToggleButton) findViewById(R.id.toggle);
layout = (LinearLayout) findViewById(R.id.test);
匿名內部類:
tb.setOnCheckedChangeListener(new
OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
if (arg1) {
layout.setOrientation(LinearLayout.HORIZONTAL);
} else {
layout.setOrientation(LinearLayout.VERTICAL);
}}});
九、計時器組件(Chronometer)
獲取計時器組件:
final Chronometer chro = (Chronometer) findViewById(R.id.test);
改變顯示的信息內容,使用"%s"表示計時信息
chro.setFormat("計時信息:%s");
獲取「開始」按鈕
Button btnStart = (Button) findViewById(R.id.start);
獲取事件監聽:
btnStart.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
設置開始計時時間:
SystemClock系統時鐘類,
elapsedRealtime方法是獲得當前系統的真實時間
hro.setBase(SystemClock.elapsedRealtime());
啓動計時器:
chro.start();
} });
時鐘改變一次監聽一次:
chro.setOnChronometerTickListener(new
OnChronometerTickListener() {
public void onChronometerTick(Chronometer ch) {
若是從開始計時到如今超過了20s。(15 - 11 > 20 * 1000)
Log.i("TestActivity", SystemClock.elapsedRealtime()
+ "");
if (SystemClock.elapsedRealtime() - ch.getBase() >
20 * 1000) {
ch.stop();
} } });
定義模擬時鐘:<AnalogClock …… />
定義數字時鐘:<DigitalClock ……android:textSize="14pt" />
計時器:<Chronometer android:id="@+id/test" ……
android:textSize="12pt" ……
android:textColor="#ffff0000" />
十、圖像視圖(ImageView)
<ImageView android:src="@drawable/icon"
android:layout_marginLeft="10dp" 距離左邊10 dp
android:layout_marginTop="100dp" 距離上面100dp/>
十一、自動完成文本框 (AutoCompleteTextView)
指定輸入一個字符後進行提示:<AutoCompleteTextView />
設置出如今下拉菜單中的提示標題: android:completionHint="@string/title"
設置下拉菜單的寬度: android:dropDownWidth="100dp"
設置下拉菜單與文本框之間的水平偏移:android:dropDownHorizontalOffset="30dp"
設置用戶至少輸入幾個字符纔會顯示提示:android:completionThreshold="2"
具體實現(Activity):
一、定義字符串數組,做爲提示的文本
String[] books = new String[] { "active", "activity", "activity", "apple","apple" };
二、獲取CompleteTextView上下文對象:
AutoCompleteTextView actv = (AutoCompleteTextView) findViewById(R.id.auto);
三、建立一個ArrayAdapter,封裝數據
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout. simple_dropdown_item_1line, books);
simple_dropdown_item_1line:android自帶的配置文件。
四、設置Adapter
actv.setAdapter(adapter);
1二、下拉列表框(Spinner)
定義了一個Spinner組件, 指定該顯示該Spinner組件的數組:
<Spinner …… />
使用數組資源設置該下拉列表框的列表項目:
android:entries="@array/books"
books.xml:<string-array name="books">
<item>Java SE</item>
<item>Java EE</item>
<item>Java ME</item>
<item>Linux</item>
</string-array>
設置該列表選擇框的提示
android:prompt="@string/info"
1三、時間和日期組件(DatePicker、TimePicker)
定義一個DatePicker組件(日期:年,月,日):<DatePicker …… />
定義一個TimePicker組件(時間:含上下午 ):<TimePicker …… />
Activity:
引用佈局文件中的組件:findViewById();
獲取當前的年、月、日、小時、分鐘:Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month= c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
hour = c.get(Calendar.HOUR);
minute = c.get(Calendar.MINUTE);
用於顯示時間的方法(show):
private void showDate(int year, int month, int day, int hour, int minute) {
EditText show = (EditText) findViewById(R.id.show);
show.setText("您的購買日期爲:" + year + "年" + month + "月" + day + "日 " + hour
+ "時" + minute + "分"); }
初始化DatePicker組件,初始化時指定監聽器:
datePicker.init(year, month, day, new OnDateChangedListener() {
public void onDateChanged(DatePicker arg0, int year, int month, int day) { TestActivity.this.year = year;
TestActivity.this.month = month;
TestActivity.this.day = day;
// 顯示當前日期、時間
showDate(year, month, day, hour, minute); }});
爲TimePicker指定監聽器:
timePicker.setOnTimeChangedListener(new OnTimeChangedListener() {
public void onTimeChanged(TimePicker arg0, int hour, int minute) {
TestActivity.this.hour = hour;
TestActivity.this.minute = minute;
// 顯示當前日期、時間
showDate(year, month, day, hour, minute); }});
1四、水平進度條(ProgressBar)
定義一個水平進度條
<ProgressBar android:id="@+id/bar" ……
android:max="100" android:progress="30"
style="@android:style/Widget.ProgressBar.Horizontal" />
Widget.ProgressBar.Horizontal:系統自帶佈局方式。
1五、拖動條(SeekBar)
定義一個拖動條,並改變它的滑塊外觀:
<SeekBar
android:id="@+id/seekbar" ……
android:max="255" android:progress="120"
android:thumb="@drawable/marker" (更改滑塊外觀)/>
Activity:
一、 findViewById
二、 事件監聽器:
seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
// 當拖動條的滑塊位置發生改變時觸發該方法
public void onProgressChanged(SeekBar arg0, int progress, boolean fromUser) {image.setAlpha(progress); }// 設置透明度
public void onStartTrackingTouch(SeekBar bar) {}
public void onStopTrackingTouch(SeekBar bar) {}});
1六、星級評分條(RatingBar)
定義一個星級評分條:
<RatingBar android:id="@+id/rating" ……
android:numStars="5" //星的數量 android:max="50"//總長度
android:progress="10"//單位長度 android:stepSize=".5"//容許最小尺寸/>
1七、選項卡(TabHost)
定義一個TabHost <TabHost ……> …… </TabHost>
添加幾個佈局:
<LinearLayout android:id="@+id/tb1" android:orientation="vertical" >
<LinearLayout android:id="@+id/tb2" android:orientation="vertical" >
<LinearLayout android:id="@+id/tb3" android:orientation="vertical" >
Activity:
一、 TabHost th = getTabHost();//獲取選項卡
二、 LayoutInflater.from(this).inflate(R.layout.main, th.getTabContentView(),true) //獲取佈局文件
三、 在選項卡中添加已有的佈局:
th.addTab(th.newTabSpec("t1").setIndicator("軟件").setContent(R.id.tb1));
th.addTab(th.newTabSpec("t2").setIndicator("動漫", getResources().getDrawable(R.drawable.ic_launcher)).setContent(R.id.tb2));
th.addTab(th.newTabSpec("t3").setIndicator("網絡").setContent(R.id.tb3));
1八、滾動條(ScrollView)
一、建立<ScrollView:>
二、建立<HorizontalScrollView>
三、中間是文本內容,最後結束 </HorizontalScrollView> </ScrollView>
1九、列表視圖(ListView)
建立ListView(佈局文件):
<ListView ……
android:divider="@drawable/green"//每一個選項之間的分界圖片
android:id="@+id/lv1"></ListView>
Activity(方法2):
findViewById
String [] arr= {"大師兄","fdasfd","dafa"};
ArrayAdapter<String> arrayAdapter= new ArrayAdapter<String>(this,
android.R.layout.simple_expandable_list_item_1,arr);
lv.setAdapter(arrayAdapter);
20、詳解simple_list_item
一、 simple_list_item_1: 每個列表項都是一個普通的TextView
二、 simple_list_item_2:每個列表項都是一個普通的TextView,字體略大,TextView 顯示 標題,TextView顯示內容,所以須要兩組數據,而且指定每組數據和兩個TextView的對應關係
3、simple_list_item_checked:每個列表項都是一個已勾選的列表項
4、simple_list_item_multiple_choice:每個列表項都是帶多選項
5、simple_list_item_single_choice:每個列表項都是帶單選項
2一、列表(ListView)
定義數組:String[] arr = { "劉德華", "張學友", "黎明", "郭富城" };
將數組中的內容添加到列表中:
List<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
for (int i = 0; i < arr.length; i++) {
HashMap<String, Object> item = new HashMap<String, Object>();
item.put("num1", i); item.put("value1", arr[i]);
ata.add(item); }
SimpleAdapter adapter = new SimpleAdapter(this,
data,android.R.layout.simple_list_item_2,
new String[]{"num1","value1"},
new int[]{android.R.id.text1,android.R.id.text2});
// 設置該窗口顯示列表
setListAdapter(adapter);
形式二:
一、 建立數組,以及對應圖標:
private String[] names = new String[] { "唐伯虎", "祝枝山", "文徵明", "徐禎卿" };
private int[] imageIds = new int[] { R.drawable.icon,
R.drawable.icon, R.drawable.icon, R.drawable.icon };
private String[] values = new String[]{"1","2","3","4"};
二、 重寫方法(onCreate(Bundle savedInstanceState))
// 建立一個List集合,List集合的元素是Map
List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();
for (int i = 0; i < names.length; i++) {
Map<String, Object> listItem = new HashMap<String, Object>();
listItem.put("header", imageIds[i]);
listItem.put("personName", names[i]);
listItem.put("personInfo", values[i]);
listItems.add(listItem); }
// 建立一個SimpleAdapter
SimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems,
R.layout.main, new String[] { "personName", "header" ,"personInfo"},
new int[] { R.id.name, R.id.header,R.id.info });
ListView list = (ListView) findViewById(R.id.mylist);
// 爲ListView設置Adapter
list.setAdapter(simpleAdapter);
main.xml配置文件:
<!-- 定義一個List -->
<ListView android:id="@+id/mylist" …… />
<!-- 定義一個ImageView,用於做爲列表項的一部分。 -->
<ImageView android:id="@+id/header" …… />
<!-- 定義一個TextView,用於做爲列表項的一部分。 -->
<TextView android:id="@+id/name" …… android:textSize="16dp"/>
<TextView android:id="@+id/info" …android:textSize="16dp"></TextView>
2二、相似QQ上的小表情(GridView)
一、//爲GridView準備數據
int[] imageIds = new int[] { R.drawable.bomb5, R.drawable.bomb6,
R.drawable.bomb7, R.drawable.bomb8, R.drawable.bomb9,
R.drawable.bomb10, R.drawable.bomb11, R.drawable.bomb12,
R.drawable.bomb13, R.drawable.bomb14, R.drawable.bomb15,
R.drawable.bomb16 };
String[] infos = new String[]{"1","2","3","4","5","6","7","8","9","10","11","12"};
二、重寫(onCreate(Bundle savedInstanceState
(轉)