Android学习--Android的常见控件与布局

来源:互联网 发布:网页关键词如何优化 编辑:程序博客网 时间:2024/06/16 12:45

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());



原创粉丝点击