1、可以使某些资源文件或UI组件可重用

<includelayout="@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属性设置

设置字体为30ptandroid: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=""

普通图片按钮<ImageButtonandroid:src=""/>

按下时显示不同图片的按钮(利用配置文件解决即,button_selector.xmlandroid: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、单选按钮和多选按钮(RadioGroupCheckBox

定义一组单选框<RadioGroupandroid:orientation="vertical"

android:layout_gravity="center_horizontal">

定义个单选框<RadioButtonandroid:text="@string/male"/>

定义一个垂直的线性布局

<LinearLayoutandroid:layout_gravity="center_horizontal"

定义三个复选框

<CheckBoxandroid:text="@string/red"

android:checked="true"/>……

9、带类似开关式的按钮(ToggleButton

定义一个ToggleButton按钮<ToggleButton

android:textOff="@string/layoutH"

android:textOn="@string/layoutV"/>

定义一个可以动态改变方向的线性布局

TestActivity

ToggleButtontb= (ToggleButton) findViewById(R.id.toggle);

layout= (LinearLayout) findViewById(R.id.test);

匿名内部类

tb.setOnCheckedChangeListener(new

OnCheckedChangeListener() {

public void onCheckedChanged(CompoundButton arg0, booleanarg1) {

if (arg1) {

layout.setOrientation(LinearLayout.HORIZONTAL);

} else {

layout.setOrientation(LinearLayout.VERTICAL);

}}});

9、计时器组件Chronometer

获取计时器组件

finalChronometer chro = (Chronometer) findViewById(R.id.test);

改变显示的信息内容,使用"%s"表示计时信息

chro.setFormat("计时信息:%s");

获取“开始按钮

Button btnStart = (Button) findViewById(R.id.start);

获取事件监听:

btnStart.setOnClickListener(newOnClickListener() {

publicvoidonClick(View arg0) {

设置开始计时时间

SystemClock系统时钟类,

elapsedRealtime方法是得到当前系统的真实时间

hro.setBase(SystemClock.elapsedRealtime());

启动计时器

chro.start();

}});

时钟改变一次监听一次:

chro.setOnChronometerTickListener(new

OnChronometerTickListener() {

publicvoidonChronometerTick(Chronometer ch) {

如果从开始计时到现在超过了20s15 - 11 > 20 * 1000

Log.i("TestActivity", SystemClock.elapsedRealtime()

+"");

if(SystemClock.elapsedRealtime() - ch.getBase() >

20 * 1000) {

ch.stop();

}}});

定义模拟时钟<AnalogClock……/>

定义数字时钟<DigitalClock……android:textSize="14pt"/>

计时器:<Chronometerandroid:id="@+id/test"……

android:textSize="12pt"……

android:textColor="#ffff0000"/>

10、图像视图(ImageView

<ImageViewandroid: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=newString[] {"active","activity","activity","apple","apple"};

2、获取CompleteTextView上下文对象:

AutoCompleteTextView actv = (AutoCompleteTextView) findViewById(R.id.auto);

3、创建一个ArrayAdapter,封装数据

ArrayAdapter<String> adapter =newArrayAdapter<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-arrayname="books">

<item>Java SE</item>

<item>Java EE</item>

<item>Java ME</item>

<item>Linux</item>

</string-array>

设置该列表选择框的提示

android:prompt="@string/info"

13、时间和日期组件(DatePickerTimePicker

定义一个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):

privatevoidshowDate(intyear,intmonth,intday,inthour,intminute) {

EditText show = (EditText) findViewById(R.id.show);

show.setText("您的购买日期为:"+ year +""+ month +""+ day +""+ hour

+""+ minute +"");}

初始化DatePicker组件,初始化时指定监听器

datePicker.init(year,month,day,newOnDateChangedListener() {

publicvoidonDateChanged(DatePicker arg0,intyear,intmonth,intday) {TestActivity.this.year= year;

TestActivity.this.month= month;

TestActivity.this.day= day;

//显示当前日期、时间

showDate(year, month, day,hour,minute); }});

为TimePicker指定监听器

timePicker.setOnTimeChangedListener(newOnTimeChangedListener() {

publicvoidonTimeChanged(TimePicker arg0,inthour,intminute) {

TestActivity.this.hour= hour;

TestActivity.this.minute= minute;

//显示当前日期、时间

showDate(year,month,day, hour, minute); }});

14、水平进度条ProgressBar

定义一个水平进度条

<ProgressBarandroid: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

findViewById

2、事件监听器

seekBar.setOnSeekBarChangeListener(newOnSeekBarChangeListener() {

//当拖动条的滑块位置发生改变时触发该方法

publicvoidonProgressChanged(SeekBar arg0,intprogress,booleanfromUser) {image.setAlpha(progress); }//设置透明度

publicvoidonStartTrackingTouch(SeekBar bar) {}

publicvoidonStopTrackingTouch(SeekBar bar) {}});

16、星级评分条RatingBar

定义一个星级评分条

<RatingBarandroid:id="@+id/rating"……

android:numStars="5"//星的数量android:max="50"//总长度

android:progress="10"//单位长度android:stepSize=".5"//允许最小尺寸/>

17、选项卡(TabHost

定义一个TabHost<TabHost……>……</TabHost>

添加几个布局:

<LinearLayoutandroid:id="@+id/tb1"android:orientation="vertical">

<LinearLayoutandroid:id="@+id/tb2"android:orientation="vertical">

<LinearLayoutandroid:id="@+id/tb3"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=newArrayAdapter<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的对应关系

3simple_list_item_checked每一个列表项都是一个已勾选的列表项

4simple_list_item_multiple_choice每一个列表项都是带多选项

5simple_list_item_single_choice每一个列表项都是带单选项

21、列表ListView

定义数组:String[] arr = {"刘德华","张学友","黎明","郭富城"};

将数组中的内容添加到列表中:

List<HashMap<String, Object>> data =newArrayList<HashMap<String,Object>>();

for(inti = 0; i < arr.length; i++) {

HashMap<String, Object> item =newHashMap<String, Object>();

item.put("num1", i);item.put("value1", arr[i]);

ata.add(item);}

SimpleAdapter adapter =newSimpleAdapter(this,

data,android.R.layout.simple_list_item_2,

newString[]{"num1","value1"},

newint[]{android.R.id.text1,android.R.id.text2});

//设置该窗口显示列表

setListAdapter(adapter);

形式二:

1、创建数组,以及对应图标:

privateString[]names=newString[] {"唐伯虎","祝枝山","文征明","徐祯卿"};

privateint[]imageIds=newint[] { R.drawable.icon,

R.drawable.icon, R.drawable.icon, R.drawable.icon};

privateString[]values=newString[]{"1","2","3","4"};

2、重写方法(onCreate(Bundle savedInstanceState)

//创建一个List集合,List集合的元素是Map

List<Map<String, Object>> listItems =newArrayList<Map<String, Object>>();

for(inti = 0; i <names.length; i++) {

Map<String, Object>listItem=newHashMap<String,Object>();

listItem.put("header",imageIds[i]);

listItem.put("personName",names[i]);

listItem.put("personInfo",values[i]);

listItems.add(listItem); }

//创建一个SimpleAdapter

SimpleAdapter simpleAdapter =newSimpleAdapter(this,listItems,

R.layout.main,newString[] {"personName","header","personInfo"},

newint[] { R.id.name, R.id.header,R.id.info});

ListView list = (ListView) findViewById(R.id.mylist);

//ListView设置Adapter

list.setAdapter(simpleAdapter);

main.xml配置文件:

<!--定义一个List -->

<ListViewandroid:id="@+id/mylist"……/>

<!--定义一个ImageView,用于作为列表项的一部分。-->

<ImageViewandroid:id="@+id/header"……/>

<!--定义一个TextView,用于作为列表项的一部分。-->

<TextViewandroid:id="@+id/name"……android:textSize="16dp"/>

<TextViewandroid:id="@+id/info"android:textSize="16dp"></TextView>

22、类似QQ上的小表情(GridView

1、//GridView准备数据

int[]imageIds=newint[] { 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=newString[]{"1","2","3","4","5","6","7","8","9","10","11","12"};

2、重写(onCreate(Bundle savedInstanceState

(转)

更多相关文章

  1. Android横竖屏切换小结
  2. android笔试题
  3. Android(安卓)Makefile中如何识别TARGET_PRODUCT
  4. [Android]新功能引导高亮显示遮罩层View
  5. Android(安卓)MediaCodec H264编码设置Main Profile & High Prof
  6. Android(安卓)关于RatingBar评分条
  7. android布局layout中的一些属性
  8. android设置跑马灯效果
  9. Android开发面试经——2.常见Android基础笔试题

随机推荐

  1. Android数据通信——JSON&Gson(Android(
  2. Android图片压缩-大小与质量压缩
  3. Android入门之TabHost,TabWidget
  4. cocox2d-x在android下崩溃log的定位
  5. android TextView ellipsize 只显示一个
  6. Android官方入门文档[7]样式化操作栏
  7. Android 近百个项目的源代码
  8. Android获取手机屏幕的宽高
  9. Android中的Touch事件
  10. 【新版】Android技术博客精华汇总