1.RelativeLayout中的位置属性
XML中的相对位置属性 | RelativeLayout类的相对位置 | 相对位置说明 |
layout_toLeftOf | LEFT_OF | 当前视图在指定视图的左边 |
layout_toRightOf | RIGHT_OF | 当前视图在指定视图的右边 |
layout_above | ABOVE | 当前视图在指定视图的上方 |
layout_below | BELOW | 当前视图在指定视图的下方 |
layout_alignLeft | ALIGN_LEFT | 当前视图与指定视图的左侧对齐 |
layout_alignRight | ALIGN_RIGHT | 当前视图与指定视图的右侧对齐 |
layout_alignTop | ALIGN_TOP | 当前视图与指定视图的顶部对齐 |
layout_alignBottom | ALIGN_BOTTOM | 当前视图与指定视图的底部对齐 |
layout_centerInParent | CENTER_IN_PARENT | 当前视图在上级视图中间 |
layout_centerHorizontal | CENTER_HORIZONTAL | 当前视图在上级视图的水平方向居中 |
layout_centerVertical | CENTER_VERTICAL | 当前视图在上级视图的垂直方向居中 |
layout_alignParentLeft | ALIGN_PARENT_LEFT | 当前视图与上级视图的左侧对齐 |
layout_alignParentRight | ALIGN_PARENT_RIGHT | 当前视图与上级视图的右侧对齐 |
layout_alignParentTop | ALIGN_PARENT_TOP | 当前视图与上级视图的顶部对齐 |
layout_alignParentBottom | ALIGN_PARENT_BOTTOM | 当前视图与上级视图的底部对齐 |
2.代码中设置RelativeLayout中控件的相对位置
代码中定义相对位置用到的是RelativeLayout.LayoutParams的addRule方法,该方法的第一个参数表示相对位置的类型,具体取值见上表。第二个参数表示参照物的id,即当前视图要参照哪个视图确定自身位置。示例代码如下:
布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<View
android:id="@+id/viewOne"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@android:color/holo_red_light"/>
<View
android:id="@+id/viewTwo"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@android:color/holo_blue_light"/>
<View
android:id="@+id/viewThree"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@android:color/holo_green_light"/>
</RelativeLayout>
java文件
public class MainActivity extends AppCompatActivity{
private View viewOne;
private View viewTwo;
private View viewThree;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewOne = findViewById(R.id.viewOne);
viewTwo = findViewById(R.id.viewTwo);
viewThree = findViewById(R.id.viewThree);
//设置第一个块位置
RelativeLayout.LayoutParams paramsOne = (RelativeLayout.LayoutParams) viewOne.getLayoutParams();
paramsOne.addRule(RelativeLayout.CENTER_IN_PARENT);
viewOne.setLayoutParams(paramsOne);
//设置第二个块位置
RelativeLayout.LayoutParams paramsTwo = (RelativeLayout.LayoutParams) viewTwo.getLayoutParams();
paramsTwo.addRule(RelativeLayout.ALIGN_LEFT,R.id.viewOne);
viewTwo.setLayoutParams(paramsTwo);
//设置第三个块位置
RelativeLayout.LayoutParams paramsThree = (RelativeLayout.LayoutParams) viewThree.getLayoutParams();
paramsThree.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
viewThree.setLayoutParams(paramsThree);
}
}