Android學習--Android的常見控件與佈局

1.Button

EditText

Menu(OncreateOptionMenu當客戶點擊menu時調用、 OnOptionItemSelected 當客戶點擊menu中的一個item時調用此函數)


2.Activity佈局:

1)(代碼提示快捷鍵 – 使用Alt + /鍵)

2LinearLayout線性佈局android:orientation線性佈局方向是水平 (vertical)還是垂直(horizontal))、TableLayout表格佈局android:stretchColumns表示當前拉伸的列,使表格填滿

3控件的一些屬性:

android:idandroid:text(控件顯示文字,儘量使用string.xml中的字串)、 android:gravity(文字對齊方式,有center_vertical水平居中、top置頂、left靠左等)、 android:textSize(字體大小)、android:background背景色(RGB)、padding(控件中內容的內邊距)、paddingLeft(左內邊距)、android:singleLine(如果爲真,控件內容將顯示在一行)、android:layout_weight(控件佔整個佈局的比例)

4LinearLayoutTableLayout的嵌套、LinearLayoutLinearLayout之間的嵌

5RelativeLayout相對佈局,比較靈活,相對佈局中控件的一些重要屬性:

android:layout_above將該控件的底部至於給定ID的控件之上

android:layout_below將該控件的頂部至於給定ID的控件之下

android:layout_toLeftOf將該控件的右邊緣和給定ID的控件的左邊緣對齊

android:layout_toRightOf將該控件的左邊緣和給定ID的控件的右邊緣對齊


android:layout_alignBaseline該控件的baseline和給定ID的控件的 baseline對齊

android:layout_alignBottom將該控件的底部邊緣與給定ID控件的底部邊緣

android:layout_alignLeft將該控件的左邊緣與給定ID控件的左邊緣對齊

android:layout_alignRight將該控件的右邊緣與給定ID控件的右邊緣對齊

android:layout_alignTop將給定控件的頂部邊緣與給定ID控件的頂部對齊

android:alignParentBottom如果該值爲true,則將該控件的底部和父控件的底部對齊

android:layout_alignParentLeft如果該值爲true,則將該控件的左邊與父控件的左邊對齊

android:layout_alignParentRight如果該值爲true,則將該控件的右邊與父控件的右邊對齊

android:layout_alignParentTop如果該值爲true,則將空間的頂部與父控件的頂部對齊


android:layout_centerHorizontal如果值爲真,該控件將被至於水平方向的中

android:layout_centerInParent如果值爲真,該控件將被至於父控件水平方向和垂直方向的中央

android:layout_centerVertical如果值爲真,該控件將被至於垂直方向的中央


android:layout_marginLeft左外邊距,即該控件與其左邊控件的邊距(內邊距是控件與其內容之間的距離)


3.單選按鈕(RadioButtonRadioGroup)與多選按鈕CheckBox的使用:

1)、RadioButton:單選按鈕,一般將其綁定在一個組內,即綁定在RadioGroup上,實現同一個組的單選功能;

RadioGroup:當選按鈕組,用於包含多個RadioButton,同一個RadioGroup只允許選中一個RadioButton

爲了對RadioGroup中的不同RadioButon按下作出不同反應,必須位該 RadioGroup綁定一個監聽器,採用setOnCheckedChangeListener方法綁定,必須實現的監聽器是RadioGroup.OnCheckedChangeListener,可以使用匿名內部類的方式聲明該監聽器類,必須實現的接口,onCheckedChanged用於監測是那個單選按鈕按下;

2CheckBox:多選按鈕,跟RadioButton不同的是,用戶可以同時按下多個 CheckBoxCheckBox不用綁定在一個Group上;

爲了對不同的CheckBox按下作出不同的反應,需要位每個CheckBox綁定監聽器,採用setOnCheckedChangeListener方法綁定,必須實現的監聽器是CompoundButton.OnCheckedChangeListener,也可以使用匿名內部類的方式聲明該監聽器類,必須實現的接口onCheckedChanged用於監測當前按鈕的狀態是選中還是未未選中,以作出不同的反應;


4.Toast的基本用法:用來提示用戶一些有用的信息

Toast.makeText(RadioTest.this,"famle",Toast.LENGTH_SHORT).show();

makeText第一個參數是當前Activity的對象,第二個參數是要提示的信息,第三個是對 message要顯示多長的設置,makeText後之間show進行顯示一個小提示框;


5.ProgressBar進度條

android:style"?android:attr/progressBarStyleHorizontal"時,表示的是水平進度條,默認的"?android:attr/progressBarStyle"爲轉圈圈的風格;

android:max表示進度條的最大長度(也可以用進度條對象調用setMax)

android:visibility表示進度條的可視狀態(gone不可見、visible可見),也可以用進度條的對象調用setVisibility方法設置

setProcess設置步長,setSecondaryProcess設置第二進度條的步長


6.ListView

ArrayList放置Hashmap對象)、HashMap(放置鍵值對)Arraylist放置在適配器中)

實現ListView,得設置一個List的適配器,採用方法setListAdapter設置

SimpleAdapter最簡單的適配器,注意定義適配器對象時各個參數的含義(參考視頻或 google幫助文檔)

注意:listviewactivity直接繼承ListActivity,爲相應listviewi中列表項按下,得注意重載方法OnlistItemClicked;主佈局文件只需放置一個嵌套在LinearLayout中的 ListView,可以對每個列表項的佈局再另寫一個佈局文件,在設置listView的適配器時,把這個佈局文件傳入則可;


7.Spinner

創建Spinner的步驟:

(1)在佈局文件中聲明:

    <Spinner
        android:id="@+id/spinner_id"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        />

(2)在string.xml中聲明一個數組:

    <string-array name="spinner_arr">
        <item >Beijing</item>
        <item >Shenzhen</item>
        <item >Xian</item>
        <item >Shanghai</item>
        <item >Guangzhou</item>

(3)創建一個ArrayAdapter:

     ArrayAdapter<CharSequence> adapter =
     ArrayAdapter.createFromResource(this, R.array.spinner_arr, android.R.layout.simple_spinner_item);

     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

     android.R.layout.simple_spinner_item

     R.layout.simple_spinner_dropdown_item

     表示採用一種android默認的標準佈局,可替換位自定義的佈局

(4)得到Spinner對象,並設置數據

     spinner = (Spinner)findViewById(R.id.spinner_id);

     spinner.setAdapter(adapter);

     spinner.setPrompt("測試");設置彈出的視圖的標題

(5)要響應按下spinner中的item,得實現一個OnItemSelectedListener的接口,必須實現函數

    //響應item選中

    //arg0.getItemAtPosition(arg2);可以獲得position位arg2的item的字串

    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3)

    //相應無item選中

    public void onNothingSelected(AdapterView<?> arg0)


注:也可以採用另一種方式創建ArrayAdapter,如下

     List<String> list = new ArrayList<String>();
        list.add("北京");
        list.add("深圳");
        list.add("上海");

       ArrayAdapter adapter = new ArrayAdapter(this, R.layout.item, R.id.textView, list);

將上述代碼替換步驟2的代碼亦能實現之

不過使用這種方法必須定義自己的xml佈局文件,而且必須有一個TextView


8.DatePickerDialog

 創建DatePickerDialog的步驟:

(1)聲明一個監聽器:

響應DatePickerDialog中的set按鈕按下

DatePickerDialog.OnDateSetListener onDateSelected = new DatePickerDialog.OnDateSetListener() {
        
        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear,
                int dayOfMonth) {
            // TODO Auto-generated method stub
            Toast.makeText(SpinnerActivity.this,"current time is " + year+ "-" +  monthOfYear + "-" + dayOfMonth, BIND_AUTO_CREATE).show();
        }
    };

(2)複寫onCreateDialog(int id)方法:

在調用Activity的showDialog方法時會調用此函數

protected Dialog onCreateDialog(int id) {
        // TODO Auto-generated method stub
        switch (id){
        case DATEPICKER://這個id與showDialog時設置並傳入的匹配才調用
            return new DatePickerDialog(this, onDateSelected, 2012, 4, 1);
        }
        return null;
    }

(3)在需要的時候調用showDialog方法:

showDialog(DATEPICKER);


9.AutoCompleteTextView//在textView中輸入文本時自動提示

創建一個AutoCompleteTextView的步驟:

(1)在佈局文件中聲明一個AutoCompleteTextView
(2)定義提示條目的樣式(注意:這裏只需一個TextView,別加XXXLayout等的佈局方式,否則出錯)

<?xml version="1.0" encoding="utf-8"?>

    <TextView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:textSize="16sp"
        android:textColor="#000"
        >
    </TextView>

(3)創建一個ArrayAdapter,AutoCompleteTextView需要使用ArrayAdapter來提供數據:

 List<String> list1 = new ArrayList<String>();
        list1.add("123516");
        list1.add("3228");
        list1.add("12562");
        ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this, R.layout.list_item, list1);

注意:這裏也可以使用一個String數組來給AutoCompleteTextView提供數據,用這個數組替換list1的位置

(4)爲AutoCompleteTextView設置數據:

autoCPTV.setAdapter(adapter1);


10. ExpandableListActivity


我們看到“國家”和“語言”分別是組名,每個組名下面還有很多child(中國,美國),(漢語,英語),其實ExpandableListActivity就是實現這樣的功能,能更方便的現實一些列表信息,

創建ExpandableListActivity的步驟:

(1)在佈局文件當中聲明ExpandableActivity控件(main.xml):

<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"/>

注意:這裏使用的是google已經定義好的id


(2)在佈局文件中聲明group的樣式(group.xml):

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <TextView android:id="@+id/groupTo"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:paddingLeft="60px"
        android:paddingTop="10px"
        android:paddingBottom="10px"
        android:textSize="26sp"
        android:text="No data" />
</LinearLayout>

(3)在佈局文件當中聲明子項的樣式:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView android:id="@+id/childTo"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:paddingLeft="50px"
        android:paddingTop="5px"
        android:paddingBottom="5px"
        android:textSize="20sp"
        android:text="No data" />
</LinearLayout>

(4)創建一個Activity繼承自ExpandableListActivity

(5)爲group創建數據:

List<Map<String, String>> groups = new ArrayList<Map<String, String>>();
        Map<String, String> group1 = new HashMap<String, String>();
        group1.put("group", "國家");
        Map<String, String> group2 = new HashMap<String, String>();
        group2.put("group", "語言");
        groups.add(group1);
        groups.add(group2);

(6)位child創建數據:

List<Map<String, String>> child1 = new ArrayList<Map<String, String>>();
        Map<String, String> child1Data1 = new HashMap<String, String>();
        child1Data1.put("child", "中國");
        child1.add(child1Data1);
        Map<String,String> child1Data2 = new HashMap<String,String>();
        child1Data2.put("child", "美國");
        child1.add(child1Data2);

           ……

         List<List<Map<String, String>>> childs = new ArrayList<List<Map<String, String>>>();
        childs.add(child1);
        childs.add(child2);

(7)利用上面的group及childs定義一個SimpleExpandableListAdapter對象,爲該ExpandableListActivity提供數據

SimpleExpandableListAdapter sela = new SimpleExpandableListAdapter(
                this, //context

                groups,//一級條目數據

                R.layout.group,//用來設置一級條目樣式的佈局文件

                new String[] { "group" },//用來設置一級條目數據的key
                new int[] { R.id.groupTo }, //指定一級條目數據顯示控件的id

                childs, //指定二級條目數據

                R.layout.child,//用來設置二級條目樣式的佈局文件
                new String[] { "child" }, //指定二級條目數據的key

               new int[] { R.id.childTo });//指定二級條目數據顯示控件的id

(8)爲該ExpandableListActivity設置數據

        setListAdapter(sela);


11. SeekBar(可拖動的進度條,比如mp3播放器的進度條,前面學過的ProgressBar是一個不可拖動的)

(1)在佈局文件當中聲明SeekBar

(2)定義一個實現SeekBarOnSeekBarChangeListener監聽器的類,即進度條的監聽器

必須實現的接口有

onProgressChanged //進度條拖動過程中調用

onStartTrackingTouch//進度條開始拖動時調用

onStopTrackingTouch//進度條停止拖動時調用

(3)給進度條控件SeekBar的對象綁定監聽器


12. RatingBar (評分條,在軟件商店裏經常用到)

使用RatingBar的步驟:

(1)在佈局文件當中聲明RatingBar;

    <RatingBar
        android:id="@+id/ratingBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:numStars="5"
        android:stepSize="1.0"
        />

注意在給其設置屬性時android:layout_height最好設置爲wrap_content

android:numStars="5" 確定了有5個星星

(2)實現監聽器接口OnRatingBarChangeListener

必須實現的函數onRatingChanged,在每次選擇星星時調用(如果選的還是當前的星星,則不變)

(3)位RatingBar綁定監聽器

ratingBar.setOnRatingBarChangeListener(new OnRatingBarChangeListener());



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