使用XML布局文件控制UI界面
1.在安卓程序的res/layout 目录下编写XML布局文件——要求XML文件名符合Java命名规则
2.在Activity中用setContenView(R.layout.main)显示XML文件中的布局内容,买你为XML文件名
3.在XML中添加多个UI组件,可以通过android:id访问指定UI组建:findViewById(R.id.<android.id.id属性值>)
android应用的所有组件都建立在View类,ViewGroup类的基础上
ViewGroup作为子类,继承了View类,常用作容器使用。因其是抽象类,实际使用时通常用其子类做为容器,如各种布局管理器。
ViewGroup类控制其子类的分布依赖于ViewGroup.LayoutParams和ViewGroup.MarginLayoutParams两个内部类。
View,ViewGroup类的XML常用属性
android:orientation属性:布局管理器组件排列方式(horizontal水平排列,vertical垂直排列)
android:gravity属性:LinearLayout的XML属性,设置组件对齐方式,包括(top ,bottom,left,right,center_vertical,fill_vertical,center_horizontal,fill_horizental,center,fill,clip_vertical,clip_horizontal)。这些属性可以同时指定,如:android.horizontal= "top | left"
android:padding:设置组件四面的填充区域,另有android:padding(Buttom/Left/Right/Top)来设置单一边的填充区域
android:layout_width和android:layout_height属性:ViewGroup.LayoutParams所支持的两个XML属性,用于设计组件基本宽、高。包括(fill_parent(充满父组件),match_parent(与前者相同,android2.2后推荐使用),wrap_content(恰好包括其内容))
android:id属性:为当前组件指定id,在Java代码中可以通过id单独引用这个组件。在组件id被指定后,在R.java中自动派生出对应属性,可在Java代码中通过findViewById()方法获取该属性。
android:background属性:为组件设置背景,可以为图片或颜色
android:layout_marginBottom,_marginLeft,_marginRight,~_marginTop:指定该子组件 的各个边的页边距。
类同CSS盒子模型
不同部分的说明:
Margin(外边距) - 清除边框外的区域,外边距是透明的。
Border(边框) - 围绕在内边距和内容外的边框。
Padding(内边距) - 清除内容周围的区域,内边距是透明的。
Content(内容) - 盒子的内容,显示文本和图像。——by菜鸟教程
实例1:图片浏览器
1.定义线性布局容器
`<LinearLayout xmls:android="http://schemas.android.com/apk/res/android"
android:id = "@id/root"
android:orientation= "vertical"
android.layout_width= "fill_parent"
android.layout_height= "fill_parent"
</LinearLayout>`
2.在程序中获取线性布局容器
int[] images = new int[] { R.drawable.java, R.drawable.ee, R.drawable.classic, R.drawable.ajax, R.drawable.xml,}; int currentImg = 0; @Override public void OnCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContenView(R.layout.main); LinearLayout main = (LinearLayout) findViewById(R.id.root);//获取LinearLayout布局容器 final ImageView image = new ImageView(this);//创建ImgView组件 main.addView(image); image.setImageResource(image[0]); image.setOnClickListener(new onClickListener() { @override public void onClick(View v) { image.setImageResource(images[++currentImg%images.length]); } } ); }
一些简单的用户界面——输入
1.文本输入框EditText
<EditText android:id="@+id/edit_message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="@string/edit_message" />
其中,@string/edit_message需要在res/values/string.xml中定义
<resources><string name="edit_message">Enter a message</string>
</resources>`
2.按钮Button——发送按钮
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" />
其中@string/button_send同上
3.改变输入框使其充满能够使用的整个屏幕宽度
方法:在activity_my.xml文件里,设置EditText的layout_weight属性值为1 .并设置EditText的layout_width值为0dp.
修改后代码为
<EditText android:id="@+id/edit_message" android:layout_width="0dp" android:layout_weight= "1" android:layout_height="wrap_content" android:hint="@string/edit_message" />
4.点击响应——发送
(1)为 Button 标签添加android:onclick属性
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" android:onClick="sendMessage" />
其中,sendMassage为用户点击屏幕按钮时触发方法的名字
(2)在activity.java中添加sendMassage函数
public void sendMessage(View view) { // Do something in response to button }
Warning:为使系统能够将该方法(你刚在MyActivity.java中添加的sendMessage方法)与在android:onClick属性中提供的方法名字匹配,它们的名字必须一致,特别需要注意的是,这个方法必须满足以下条件:
是public函数
无返回值
参数唯一(为View类型,代表被点击的视图)