Android 界面布局之RelativeLayout

Android 的 RelaliveLayout 布局的参数定义:

android:layout_above="@id/xxx"  --将控件置于给定ID控件之上
android:layout_below="@id/xxx"  --将控件置于给定ID控件之下

android:layout_toLeftOf="@id/xxx"  --将控件的右边缘和给定ID控件的左边缘对齐
android:layout_toRightOf="@id/xxx"  --将控件的左边缘和给定ID控件的右边缘对齐

android:layout_alignLeft="@id/xxx"  --将控件的左边缘和给定ID控件的左边缘对齐
android:layout_alignTop="@id/xxx"  --将控件的上边缘和给定ID控件的上边缘对齐
android:layout_alignRight="@id/xxx"  --将控件的右边缘和给定ID控件的右边缘对齐
android:layout_alignBottom="@id/xxx"  --将控件的底边缘和给定ID控件的底边缘对齐
android:layout_alignParentLeft="true"  --将控件的左边缘和父控件的左边缘对齐
android:layout_alignParentTop="true"  --将控件的上边缘和父控件的上边缘对齐
android:layout_alignParentRight="true"  --将控件的右边缘和父控件的右边缘对齐
android:layout_alignParentBottom="true" --将控件的底边缘和父控件的底边缘对齐
android:layout_centerInParent="true"  --将控件置于父控件的中心位置
android:layout_centerHorizontal="true"  --将控件置于水平方向的中心位置
android:layout_centerVertical="true"  --将控件置于垂直方向的中心位置

编程实例:

定义布局 activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/r1"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="#edab4a" >

<Button

android:id="@+id/Shang"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentTop="true"

android:layout_centerHorizontal="true"

android:text="@string/shang" />

<Button

android:id="@+id/Xia"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_centerHorizontal="true"

android:text="@string/xia" />

<Button

android:id="@+id/Zuo"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_centerVertical="true"

android:text="@string/zuo" />

<Button

android:id="@+id/You"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentRight="true"

android:layout_centerVertical="true"

android:text="@string/you" />

<ImageButton

android:contentDescription="@string/wutu"

android:id="@+id/Start"

android:layout_width="60dip"

android:layout_height="100dip"

android:layout_centerInParent="true"

android:src="@drawable/fengjing" />

</RelativeLayout>

字符串资源 sring.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="app_name">RelativeLayout</string>

<string name="action_settings">Settings</string>

<string name="hello_world">Hello world!</string>

<string name="shang">上</string>

<string name="xia">下</string>

<string name="zuo">左</string>

<string name="you">右</string>

<string name="wutu">无图</string>

<string name="shuoming">图片说明</string>

</resources>

主活动  MainActivity.java

package com.malakana.relativelayout;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.ViewGroup;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ImageView;

import android.widget.RelativeLayout;

import android.app.Activity;

public class MainActivity extends Activity {

RelativeLayout r1;

Button shang;

Button xia;

Button zuo;

Button you;

ImageView currButton;

ImageView start;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

r1 = (RelativeLayout) findViewById(R.id.r1);

shang = (Button) findViewById(R.id.Shang);

xia = (Button) findViewById(R.id.Xia);

zuo = (Button) findViewById(R.id.Zuo);

you = (Button) findViewById(R.id.You);

start = (ImageView) findViewById(R.id.Start);

currButton = start;

shang.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {

// TODO Auto-generated method stub

EditText temp = new EditText(MainActivity.this);

temp.setText(R.string.shuoming);

//设置控件位置

RelativeLayout.LayoutParams lp_1 =

new RelativeLayout.LayoutParams(

ViewGroup.LayoutParams.WRAP_CONTENT,95);

lp_1.addRule(RelativeLayout.ABOVE,currButton.getId()); //ABOVE  在currButton之上

lp_1.addRule(RelativeLayout.CENTER_HORIZONTAL,currButton.getId());

//将控件添加到布局中

r1.addView(temp,lp_1);

}});

xia.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {

// TODO Auto-generated method stub

EditText temp = new EditText(MainActivity.this);

temp.setText(R.string.shuoming);

//设置控件位置

RelativeLayout.LayoutParams lp_1 =

new RelativeLayout.LayoutParams(

ViewGroup.LayoutParams.WRAP_CONTENT,95);

lp_1.addRule(RelativeLayout.BELOW,currButton.getId()); //BELOW  在currButton之下

lp_1.addRule(RelativeLayout.CENTER_HORIZONTAL,currButton.getId());

//将控件添加到布局中

r1.addView(temp,lp_1);

}});

zuo.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {

// TODO Auto-generated method stub

EditText temp = new EditText(MainActivity.this);

temp.setText(R.string.shuoming);

//设置控件位置

RelativeLayout.LayoutParams lp_1 =

new RelativeLayout.LayoutParams(

ViewGroup.LayoutParams.WRAP_CONTENT,95);

lp_1.addRule(RelativeLayout.LEFT_OF,currButton.getId()); //LEFT_OF  将控件的右边缘和currButton的左边缘对齐

lp_1.addRule(RelativeLayout.CENTER_VERTICAL,currButton.getId());  //将控件置于垂直方向的中心位置

//将控件添加到布局中

r1.addView(temp,lp_1);

}});

you.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {

// TODO Auto-generated method stub

EditText temp = new EditText(MainActivity.this);

temp.setText(R.string.shuoming);

//设置控件位置

RelativeLayout.LayoutParams lp_1 =

new RelativeLayout.LayoutParams(

ViewGroup.LayoutParams.WRAP_CONTENT,95);

lp_1.addRule(RelativeLayout.RIGHT_OF,currButton.getId()); //RIGHT_OF  将控件的左边缘和currButton的右边缘对齐

lp_1.addRule(RelativeLayout.CENTER_VERTICAL,currButton.getId());  //将控件置于垂直方向的中心位置

//将控件添加到布局中

r1.addView(temp,lp_1);

}});

}

}

效果图:

时间: 2024-12-22 13:13:32

Android 界面布局之RelativeLayout的相关文章

iOS中xib与storyboard原理,与Android界面布局的异同

用文本标记语言来进行布局,用的最多的应该是HTML语言.HTML可以理解为有一组特殊标记的XML语言. 一.iOS中xib与storyboard显示原理 在iOS中主要的布置界面的方式有3种:代码,xib,storyboard. 1. 代码 代码布置界面是万能的,但通常很复杂.布置一个简单的界面可能需要很多行代码,因此十分繁琐. 下面为创建一个按钮的代码,最少也要3行: UIButton *btn = [UIButton buttonWithType:UIButtonTypeContactAdd

解决Android界面布局添加EditText组件后界面无法预览

错误报告: Exception raised during rendering: java.lang.System.arraycopy([CI[CII)V Exception details are logged in Window > Show View > Error Log 问题分析: 进入xml源文件里发现一个警告,提示添加inputType或者hint元素,添加后界面仍然无法预览... 仔细查看了当前使用的API等级 API 20:Android 4.4w,这是Android官网发布

android界面布局

(一)LinearLayout界面编排模式 他的格式是按照线性顺序,由上往下或右左往右,逐一排列界面组件. layout_width:中的“match_parent”表示要填满他所在的外框,而“wrap_content”表示它的大小只要满足内部所包含的界面组件即可. android:orientation:“horizontal”表示排列方式为水平,而“vertical”表示排列方式为垂直 LinearLayout标签可以想象成一个外框,我们可以在其里面加入另外一个LinearLayout标签

android 界面布局 很好的一篇总结[转]

??在?android?中我们常用的布局方式有这么几种: 1.LinearLayout (?线性布局?)?:(里面只可以有一个控件,并且不能设计这个控件的位置,控件会放到左上角) ???????????????????????????????????????????线性布局分为水平线性和垂直线性二者的属性分别为:android:orientation=?"?horizontal?"???android:orientation=?"vertical"?. 2.Rela

Android UI布局之RelativeLayout

RelativeLayout是一个相对布局类.首先RelativeLayout是一个容器,它里边的元素,如Button按钮等的位置是按照相对位置来计算的,例如,有两个Button按钮都布局在一个RelativeLayout里边,我们可以定义第二个Button在第一个Button的上边或者是右边.但到底第二个Button在什么位置呢,它还是依赖于第一个Button的位置.需要注意的是,出于性能上的考虑,对于相对布局的精确位置的计算只会执行一次,所以,如果一个可视化组件B依赖A,那么必须要让A出现在

Android 界面布局

Android布局是所有带界面的Android应用的开端,布局应用的好坏直接决定了用户体验. Android共有五种布局,分别为FrameLayout(堆栈布局). LinearLayout(线性布局). RelativeLayout(相对布局). TableLayout(表格布局). AbsoluteLayout(绝对布局).最常用的布局是FrameLayout.LinearLayout和RelativeLayout. FrameLayout:在布局文件中使用<FrameLayout>标签标

[Android]继承式UI界面布局设计

一般而言,Android界面布局使用聚合的方式比较多,这种方式要求首先构建一批能够复用的组件,然后在Activity的布局文件中进行聚合.尽管这种方式能够完成组件的复用,但如果这些组件在不同Activity中的布局有很多相同点的时候,也还是会带来很大程度的冗余(代码).本文介绍一种比聚合更加有效的界面布局方式--继承式布局. 对于类的继承和对象的聚合之间有哪些相同点和不同点,分别适用于哪种场景,相信大家已经深有体会.在此就不多讲了.其实类比过来,Android的界面布局也是如此.假设我们需要实现

安卓学习-界面-布局-RelativeLayout

RelativeLayout相对布局,所有内部的组件都是相对的 XML属性 XML属性 函数 说明 android:gravity setGravity 内部组件的对其方式 android:ignoreGravity setIgnoreGravity 设置哪个组件不受Gravity影响 RelativeLayout.LayoutParams用来设置内部组件的对齐方式 XML属性 说明 android:layout_centerHorizontal 水平居中 android:layout_cent

android界面设计之布局管理

谈到android界面设计,各种布局样式不得不提!传统的布局方式有6种,我们会一一介绍. 在android studio2.2版本之后出现了一款超棒的布局方式,真正意义上的所见即所得,后面我们也会讲到! 1.LinearLayout:线性布局:线性布局又有两种,"垂直布局"和"水平布局". 垂直布局每一行只能有一个控件(自己嵌套的不算): 水平布局只有一行,所有的控件依次从左向右排列: linearLayout中有一个重要的属性 android:layout_wei