1、**可以使某些资源文件或UI组件可重用** 2、**定义一个文本编辑框,使用绝对定位**android:layout_x=_"20dip"_android:layout_y=_"80dip"__3、_**控件位置**android:layout_centerHorizontal 控制该组件是否位于布局容器的**水平居中位置**android:layout_centerVertical 控制该组件是否位于布局容器的**垂直居中位置**android:layout_centerInParent 控制该组件是否位于布局容器的**中央位置**android:layout_alignParentBottom 控制该组件是否与布局容器**底端对齐**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 设置该列的所有单元格会**被隐藏** **5、TextView属性设置**设置字体为30pt android:textSize=_"30pt"_设置中间省略 android:singleLine=_"true"_ android:ellipsize=_"middle"_对邮件增加链接 android:autoLink=_"email"_ android:autoLink=_"email"_测试密码框 android:password=_"true"_绘制一张图片 android:drawableLeft=_"@drawable/icon"__6、**EditText属性设置**_当前组件在得到焦点的时候,自动选取该组件内的所有的文本内容android:selectAllOnFocus=_"true"_当前组件只能输入数字 android:phoneNumber=_"true"_当前组件显示的提示信息,被选中时,内容自动被清空android:hint=_"@string/edtPhone_**7、按钮以及属性(**Button……**)**普通文字按钮 android:background=_""_普通图片按钮 按下时显示不同图片的按钮(利用配置文件解决即,button_selector.xml, android:src=_"@drawable/button_selector"_ )Button_selector.xml:指定按钮按钮下时的图片指定按钮松开时的图片:带文字的图片按钮 android:background=_"@drawable/button_selector"_android:text=_"@string/btnImage"_**8、单选按钮和多选按钮(**RadioGroup、CheckBox**)**定义一组单选框 定义一个单选框 定义一个垂直的线性布局 ……**9、带类似开关式的按钮(ToggleButton)**定义一个ToggleButton按钮: 定义一个可以动态改变方向的线性布局:TestActivity:ToggleButton tb = (ToggleButton) findViewById(R.id._toggle_);layout = (LinearLayout) findViewById(R.id._test_);匿名内部类:tb.setOnCheckedChangeListener(newOnCheckedChangeListener() {public void onCheckedChanged(CompoundButton arg0, boolean arg1) {if (arg1) {layout.setOrientation(LinearLayout.HORIZONTAL);} else {layout.setOrientation(LinearLayout.VERTICAL);}}});**9、计时器组件(**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();} } });定义模拟时钟:定义数字时钟:计时器:**10、图像视图(**ImageView**)****11、自动完成文本框 (**AutoCompleteTextView**)**指定输入一个字符后进行提示:设置出现在下拉菜单中的提示标题: android:completionHint=_"@string/title"_设置下拉菜单的宽度: android:dropDownWidth=_"100dp"_设置下拉菜单与文本框之间的水平偏移:android:dropDownHorizontalOffset=_"30dp"_设置用户至少输入几个字符才会显示提示:android:completionThreshold=_"2"_具体实现(Activity):1、定义字符串数组,作为提示的文本String[] books = **new** String[] { "active", "activity", "activity", "apple","apple" };2、获取CompleteTextView上下文对象:AutoCompleteTextView actv = (AutoCompleteTextView) findViewById(R.id._auto_);3、创建一个ArrayAdapter,封装数据ArrayAdapter adapter = **new** ArrayAdapter(**this**, android.R.layout. _simple_dropdown_item_1line_, books);_simple_dropdown_item_1line:android自带的配置文件。__4、_设置Adapteractv.setAdapter(adapter);**12、下拉列表框(**Spinner**)**定义了一个Spinner组件, 指定该显示该Spinner组件的数组:使用数组资源设置该下拉列表框的列表项目:android:entries=_"@array/books"__books.xml:_Java SEJava EEJava MELinux设置该列表选择框的提示android:prompt=_"@string/info"_**13、时间和日期组件(**DatePicker、TimePicker**)**定义一个DatePicker组件(日期:年,月,日):定义一个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); }});**14、水平进度条(**ProgressBar**)**定义一个水平进度条_Widget.ProgressBar.Horizontal:_系统自带布局方式_。_**15、拖动条(**SeekBar**)**定义一个拖动条,并改变它的滑块外观:Activity:1、 findViewById2、 事件监听器: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) {}});**16、星级评分条(**RatingBar**)**定义一个星级评分条:**17、选项卡(TabHost)**定义一个TabHost  …… 添加几个布局:Activity:1、 TabHost th = getTabHost();//获取选项卡2、 LayoutInflater._from_(**this**).inflate(R.layout._main_, th.getTabContentView(),**true**) //获取布局文件3、 在选项卡中添加已有的布局: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_));**18、滚动条(ScrollView)**1、创建2、创建3、中间是文本内容,最后结束  **19、列表视图(ListView)**创建ListView(布局文件):Activity(方法2):findViewByIdString [] arr= {"大师兄","fdasfd","dafa"}; ArrayAdapter arrayAdapter= **new** ArrayAdapter(**this**,android.R.layout._simple_expandable_list_item_1_,arr); lv.setAdapter(arrayAdapter);**20、详解simple_list_item**1、 simple_list_item_1: 每一个列表项都是一个普通的TextView2、 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:每一个列表项都是带单选项**21、列表(ListView)**定义数组:String[] arr = { "刘德华", "张学友", "黎明", "郭富城" };将数组中的内容添加到列表中:List> data = **new** ArrayList>();**for** (**int** i = 0; i < arr.length; i++) {HashMap item = **new** HashMap();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);形式二:1、 创建数组,以及对应图标:**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"};**2、 重写方法(**onCreate(Bundle savedInstanceState)**)**// 创建一个List集合,List集合的元素是MapList> listItems = **new**  ArrayList>();**for** (**int** i = 0; i < names.length; i++) {Map listItem = **new** HashMap();listItem.put("header", imageIds[i]);listItem.put("personName", names[i]);listItem.put("personInfo", values[i]);listItems.add(listItem); }// 创建一个SimpleAdapterSimpleAdapter 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设置Adapterlist.setAdapter(simpleAdapter);main.xml配置文件:**22、类似QQ上的小表情(**GridView**)****1、**//为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"};_2、_重写(onCreate(Bundle savedInstanceState(转)### ### **如果,这篇博客帮您解决了问题,不妨点击一下右下角的【****推荐****】。**### **如果,您希望更容易地发现我的新博客,不妨点击一下【加关注】。**### **因为,我的热情需要您的肯定和支持!** ### **感谢您的阅读,如果文章中有错误或者您有什么好的建议,也欢迎您直接留言批评指教。Thanks,friends!**

更多相关文章

  1. Android(安卓)常见的五大布局
  2. android studio 1.0安装及遇到的问题
  3. android定义可以被其他程序调用的activity
  4. 自定义控件其实很简单2/3
  5. Android中TextView 行间距和段间距设置
  6. EditText属性大全
  7. Android样式的开发:drawable汇总篇
  8. android如何设置全屏模式
  9. 安卓笔记:安卓控件属性大全

随机推荐

  1. Android(安卓)studio中Kotlin配置和使用
  2. Android专题之AsyncTask(三)异步方法操作之
  3. Android消息推送(一)--AndroidPn(XMPP协
  4. Android HAL层库加载原理
  5. Android 教你如何写蓝牙程序1——消息传
  6. Android传感器融合
  7. android 自定义View类的简单使用 示例
  8. Android开发之网络请求通信专题(二):基于Htt
  9. HashMap在Android和Java中的不同实现
  10. android 解决帧动画卡顿情况