id="@+id/right"
android:
text="right"/>
具体示图如下:
下面将通过在Activity里面动态修改LinearLayout
(二)中相应的属性来改变屏幕布局,代码如下:
packagecom.hemi.LayoutTest;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.Gravity;
importandroid.text.TextWatcher;
importandroid.widget.LinearLayout;
importandroid.widget.RadioGroup;
importandroid.widget.EditText;
publicclassLayoutTestActivityextendsActivityimplementsRadioGroup.OnCheckedChangeListener{
RadioGrouporitentation;
RadioGroupgravity;
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
oritentation=(RadioGroup)findViewById(R.id.orientation);
oritentation.setOnCheckedChangeListener(this);
gravity=(RadioGroup)findViewById(R.id.gravity);
gravity.setOnCheckedChangeListener(this);
}
publicvoidonCheckedChanged(RadioGroupgroup,intcheckedId){
if(group==oritentation){
if(checkedId==R.id.horizotal){
oritentation.setOrientation(LinearLayout.HORIZONTAL);
gravity.setOrientation(LinearLayout.HORIZONTAL);
}else{
oritentation.setOrientation(LinearLayout.VERTICAL);
gravity.setOrientation(LinearLayout.VERTICAL);
}
}else{
if(checkedId==R.id.left){
oritentation.setGravity(Gravity.LEFT);
gravity.setGravity(Gravity.LEFT);
}elseif(checkedId==R.id.right){
oritentation.setGravity(Gravity.RIGHT);
gravity.setGravity(Gravity.RIGHT);
}else{
oritentation.setGravity(Gravity.CENTER_HORIZONTAL);
gravity.setGravity(Gravity.CENTER_HORIZONTAL);
}
}
}
}
通过点击Oritentation和Gravity的RadioGroup来控制布局,默认的布局由main.xml来配置。
点击horizontal,vertical或者center和right可改变布局,示图如下:
RalativeLayout
我们从RalativeLayout可以知道,该布局的父子Container中所有的Widgets之间的位置都是相对的。
你可以把WidgetA放在Widget的左下方,或者放在Widget的底边并和Container的底边之间。
它允许为Container或者widget指定其相对于其他widgets或者父Container的位置。
Container或者widgets是按顺序排列的,如果第一个Container或者widget在屏幕的中央,那么相对于其的其他Container和widgets将以屏幕的中央来排列。
如果使用XML的Layout文件来定义,被引用的Container或者widgets必须被定义。
在XML的layout文件中,我们就能够引用同一文件的Widgets,并且可以标识其他Widgets的相对位置。
标识一个Widgets在其Container中的位置,我们有下面的属性参数可以用,这些参数的值可以使true或者false:
1).android:
layout_alignParentTop:
表示widget的顶部和Container的顶部重合。
2).android:
layout_alignParentBottom:
表示widget的底部和Container的底部重合。
3).android:
layout_alignParentLeft:
表示widget的左边和Container的左边重合。
4).android:
layout_alignParentRight:
表示widget的右边和Container的右边重合。
5).android:
layout_centerHorizontal:
表示widget处于Container水平方向上的中间。
6).android:
layout_centerVertical:
表示widget处于Container垂直方向上的中间。
7).android:
layout_centerInParent:
表示widget处于Container平面上的正中间。
标识同一个Container中的不同的widgets之间的相对位置时,可有用如下的属性参数,参数值是其他widgets的应用。
相对位置上的widgets的引用的设定如下:
首先必须给所有的被引用的widgets赋予标示符,通过android:
id的属性,格式如@+id/widget1,然后在其他widget引用的时候使用同样的标示符,格式如@id/widget1,例:
如果widgetA标识为@+id/widgetA,则widgetB在其属性里面通过@id/widgetA引用widgetA。
1).android:
layout_above:
表示该widget必须位于参数值标识的widget的上方。
2).android:
layout_below:
表示该widget必须位于参数值标识的widget的下方。
3).android:
layout_toLeftOf:
表示该widget必须位于参数值标识的widget的左方。
4).android:
layout_toLeftOf:
表示该widget必须位于参数值标识的widget的右方。
5).android:
layout_alignTop:
表示该widget的顶部必须参数值标识的widget的顶部重合。
6).android:
layout_alignBottom:
表示该widget的底部必须参数值标识的widget的底部重合。
7).android:
layout_alignLeft:
表示该widget的左边必须参数值标识的widget的左边重合。
8).android:
layout_alignRight:
表示该widget的右边必须参数值标识的widget的右边重合。
9).android:
layout_alignBaseLine:
表示该widget的BaseLine必须参数值标识的widget的BaseLine重合。
这个主要用于Label或者其他包含文本的widgets。
在我们引用widget时不能引用该文件中尚未定义的widget。
具体的示例如下:
xmlversion="1.0"encoding="utf-8"?
>
android="
android:
layout_width="fill_parent"
android:
layout_height="wrap_content"
android:
padding="5px"
>
id="@+id/label"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
text="URL:
"
android:
paddingTop="15px"/>
id="@+id/entry"
android:
layout_width="fill_parent"
android:
layout_height="wrap_content"
android:
layout_toRightOf="@id/label"
android:
layout_alignBaseline="@id/label"
/>
id="@+id/ok"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
layout_below="@id/entry"
android:
layout_alignRight="@id/entry"
android:
text="OK"
/>
id="@+id/cancel"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
layout_toLeftOf="@id/ok"
android:
layout_alignTop="@id/ok"
android:
text="cancel"
/>
示图如下:
TableLayout
Android的TableLayout的布局就像Html的表格一样,可以根据我们的说明来安排widgets的位置。
我们可以自己控制屏幕的行数和列数,而每列可以根据包含的内容进行伸缩。
通常情况下,TableLayout有多个TableRow组成,每个TableRow就是一行,定义几个TableRow就是定义几行。
TableLayout不会显示行或者列或者cell的边线。