续上,RelativeLayout:相对布局,相对布局顾名思义就是每个组件的排列都要有个组件作为参考,相对与你参考的组件放的位置。和之前的一样,布局方式可以通过两种方式来设置我们的UI布局。
先看只设置xml文件的效果图:
xml文件:
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:id="@+id/relative" //设置RelativeLayout布局的id,待会在Actvaty.java文件中将会用到
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context=".RelativeActivity" >
- <ImageView
- android:id="@+id/cocos2d"
- android:src="@drawable/cocos2d" //设置图片组件的资源图片
- android:layout_width="90dp" //设置组件的宽度
- android:layout_height="90dp" //设置组件的高度
- />
- <ImageView
- android:id="@+id/select"
- android:src="@drawable/closeselected"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_toRightOf="@+id/cocos2d" //该图片组件放在cocos2d图片组件的右边
- android:contentDescription="p_w_picpath2"
- />
- <TextView
- android:id="@+id/mytext"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@+id/select"
- android:layout_toRightOf="@+id/cocos2d" //该件放在cocos2d图片组件的右边
- android:text="@string/hello_world" /> //设置组件的内容
- </RelativeLayout>
下面是在之前的基础之上,通过Activaty.java文件添加一个EditText组件
先看效果图片:
上面我们是将我们的EditText组件设置在cocos2d图片组件的右边,TextView组件的下边
下面看看Activaty.java的文件
- package com.cheng.relativelayout;
- import android.os.Bundle;
- import android.app.Activity;
- import android.view.Menu;
- import android.view.ViewGroup;
- import android.widget.EditText;
- import android.widget.RelativeLayout;
- import android.widget.RelativeLayout.LayoutParams;
- public class RelativeActivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- super.setContentView(R.layout.main);
- //通过id获得在main中定义的RelativeLayout布局
- RelativeLayout mRelativeLayout = (RelativeLayout)findViewById(R.id.relative);
- //定义一个RelativeLayout布局的参数
- RelativeLayout.LayoutParams reParams = new RelativeLayout.LayoutParams(
- ViewGroup.LayoutParams.FILL_PARENT, //填充满剩下的空间
- ViewGroup.LayoutParams.FILL_PARENT);
- //将我们的布局参数这在mytext的下边
- reParams.addRule(RelativeLayout.BELOW, R.id.mytext);
- //将我们的布局参数设置在cocos2d这张图片的右边
- reParams.addRule(RelativeLayout.RIGHT_OF, R.id.cocos2d);
- //定义一个EditText组件
- EditText mEditText = new EditText(this);
- //将组件添加到我们的布局之中
- mRelativeLayout.addView(mEditText, reParams);
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.main, menu);
- return true;
- }
- }
ok!