1、**能够使某些资源文件或UI组件可重用** <include layout=_"@layout/other"_/> 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=_""_ 一般图片按钮 <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"_ **8、单选按钮和多选按钮(**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"_ /> …… **9、带相似开关式的按钮(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); }}}); **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(); } } }); 定义模仿时钟:<AnalogClock …… /> 定义数字时钟:<DigitalClock ……android:textSize=_"14pt"_ /> 计时器:<Chronometer android:id=_"@+id/test"_ …… android:textSize=_"12pt"_ _……_ android:textColor=_"#ffff0000"_ /> **10、图像视图(**ImageView**)** <ImageView android:src=_"@drawable/icon"_ android:layout_marginLeft=_"10dp"_ _间隔右边10 dp_ android:layout_marginTop=_"100dp"_ _间隔下面100dp_/> **11、主动实现文本框 (**AutoCompleteTextView**)** 指定输出一个字符后进行提醒:<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<String> adapter = **new** ArrayAdapter<String>(**this**, android.R.layout. _simple_dropdown_item_1line_, books); _simple_dropdown_item_1line:android自带的配置文件。_ _4、_设置Adapter actv.setAdapter(adapter); **12、下拉列表框(**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"_ **13、工夫和日期组件(**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); }}); **14、程度进度条(**ProgressBar**)** 定义一个程度进度条 <ProgressBar android:id=_"@+id/bar"_ …… android:max=_"100"_ android:progress=_"30"_ style=_"@android:style/Widget.ProgressBar.Horizontal"_ /> _Widget.ProgressBar.Horizontal:_零碎自带布局形式_。_ **15、拖动条(**SeekBar**)** 定义一个拖动条,并扭转它的滑块外观: <SeekBar android:id=_"@+id/seekbar"_ _……_ android:max=_"255"_ android:progress=_"120"_ android:thumb=_"@drawable/marker"_ (更改滑块外观)/> Activity: 1、 findViewById 2、 事件监听器: 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**)** 定义一个星级评分条: <RatingBar android:id=_"@+id/rating"_ …… android:numStars=_"5"_ //星的数量 android:max=_"50"_//总长度 android:progress=_"10"_//单位长度 android:stepSize=_".5"_//容许最小尺寸/> **17、选项卡(TabHost)** 定义一个TabHost <TabHost ……> …… </TabHost> 增加几个布局: <LinearLayout android:id=_"@+id/tb1"_ android:orientation=_"vertical"_ > <LinearLayout android:id=_"@+id/tb__2"_ android:orientation=_"vertical"_ > <LinearLayout android:id=_"@+id/tb__3"_ android:orientation=_"vertical"_ > 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、创立<ScrollView:> 2、创立<HorizontalScrollView> 3、两头是文本内容,最初完结 </HorizontalScrollView> </ScrollView> **19、列表视图(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** 1、 simple_list_item_1: 每一个列表项都是一个一般的TextView 2、 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<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); 模式二: 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汇合的元素是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> **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!**