共计 10813 个字符,预计需要花费 28 分钟才能阅读完成。
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!**
正文完