Android RelativeLayout 属性用法详解

// 相对于给定ID控件

 代码如下 复制代码

android:layout_above 将该控件的底部置于给定ID的控件之上;

android:layout_below 将该控件的底部置于给定ID的控件之下;

android:layout_toLeftOf    将该控件的右边缘与给定ID的控件左边缘对齐;

android:layout_toRightOf  将该控件的左边缘与给定ID的控件右边缘对齐;

android:layout_alignBaseline  将该控件的baseline与给定ID的baseline对齐;

android:layout_alignTop        将该控件的顶部边缘与给定ID的顶部边缘对齐;

android:layout_alignBottom   将该控件的底部边缘与给定ID的底部边缘对齐;

android:layout_alignLeft        将该控件的左边缘与给定ID的左边缘对齐;

android:layout_alignRight      将该控件的右边缘与给定ID的右边缘对齐;

// 相对于父组件

android:layout_alignParentTop      如果为true,将该控件的顶部与其父控件的顶部对齐;

android:layout_alignParentBottom 如果为true,将该控件的底部与其父控件的底部对齐;

android:layout_alignParentLeft      如果为true,将该控件的左部与其父控件的左部对齐;

android:layout_alignParentRight    如果为true,将该控件的右部与其父控件的右部对齐;

// 居中

android:layout_centerHorizontal 如果为true,将该控件的置于水平居中;

android:layout_centerVertical     如果为true,将该控件的置于垂直居中;

android:layout_centerInParent   如果为true,将该控件的置于父控件的中央;

// 外部间隔

android:layout_marginTop       上偏移的值;

android:layout_marginBottom  下偏移的值;

android:layout_marginLeft   左偏移的值;

android:layout_marginRight   右偏移的值;

RelativeLayout代码

 代码如下 复制代码

RelativeLayout relativeLayout = new RelativeLayout(context);
  Spinner spinner = new Spinner(context);
  edit_text_add_country = new AutoCompleteTextView(context);
  edit_text_add_stock = new EditText(this);
  RadioGroup containCountry = new RadioGroup(context);
 
 
  spinner.setId(1);
  edit_text_add_country.setId(2);
  edit_text_add_stock.setId(3);
  containCountry.setId(4);
 
  String[] mCountries = { "China" , "USA", "China2", "Comunicate"};
  List<String> allcountries = new ArrayList<String>();
  ArrayAdapter<String> aspnCountries;
 
  for (int i = 0; i < mCountries.length; i++) {
   allcountries.add(mCountries[i]);
  }
 
  aspnCountries = new ArrayAdapter<String>(this,
    android.R.layout.simple_spinner_item, allcountries);
  aspnCountries
    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  spinner.setAdapter(aspnCountries);
  edit_text_add_country.setAdapter(aspnCountries);
  edit_text_add_country.setHint("input country name");
  edit_text_add_stock.setHint("input stock name");
 
  RelativeLayout.LayoutParams param1, param2, param3;
  param1 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
  param2 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
  param2.addRule(RelativeLayout.BELOW, 1);
  param3 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
  param3.addRule(RelativeLayout.BELOW, 4);
  ViewGroup.LayoutParams param4, param5;
  param4 = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
  param5 = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
 
  containCountry.addView(spinner,param4);
  containCountry.addView(edit_text_add_country, param5);
 
  relativeLayout.addView(containCountry, param1);
  relativeLayout.addView(edit_text_add_stock, param3);
 
  builder.setView(relativeLayout);

看个实例

RelativeLayout代码实现及点击设置

 代码如下 复制代码

public class Main extends Activity {
  
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
      
        ArrayList<Person> personList = new ArrayList<Person>();
        personList.add(new Person("zwx","23"));
        personList.add(new Person("zwx1","24"));
        personList.add(new Person("zwx2","25"));
      
        LinearLayout ll = (LinearLayout)findViewById(R.id.LinearLayout01);

        for(Person person : personList){
         RelativeLayout rl = new RelativeLayout(this);
         RelativeLayout.LayoutParams  rll = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);
          rl.setLayoutParams(rll);

          TextView tv1 = new TextView(this);
          RelativeLayout.LayoutParams tv1_rl = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
          tv1_rl.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
          tv1.setText(person.getName());
          rl.addView(tv1, tv1_rl);
        
          TextView tv2 = new TextView(this);
          RelativeLayout.LayoutParams tv2_rl = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
          tv2_rl.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
          tv2.setText(person.getAge());
          rl.addView(tv2, tv2_rl);

          ll.addView(rl);
          rl.setOnClickListener(new View.OnClickListener() {
    
                @Override
              public void onClick(View v) {
                   Toast.makeText(Main.this, "11", 5000).show();
                }
               }) ;
        }
    }
}

注意:不能在RelativeLayout容器本身和他的子元素之间产生循环依赖,比如说,不能将RelativeLayout的高设置成为WRAP_CONTENT的时候将子元素的高设置成为ALIGN_PARENT_BOTTOM。

时间: 2024-09-29 08:03:14

Android RelativeLayout 属性用法详解的相关文章

Android中persistent属性用法详解_Android

本文实例讲述了Android中persistent属性用法.分享给大家供大家参考,具体如下: 前段时间在研究telephony时,一直没有在framework下发现对telephony的初始化(PhoneFactory.Java中的makeDefaultPhones函数)的调用.结果全局搜索之后发现在application PhoneApp(packages/apps/Phone)中调用了.但是application PhoneApp既没有被Broadcast唤醒,也没有被其他service调用

Android中persistent属性用法详解

本文实例讲述了Android中persistent属性用法.分享给大家供大家参考,具体如下: 前段时间在研究telephony时,一直没有在framework下发现对telephony的初始化(PhoneFactory.Java中的makeDefaultPhones函数)的调用.结果全局搜索之后发现在application PhoneApp(packages/apps/Phone)中调用了.但是application PhoneApp既没有被Broadcast唤醒,也没有被其他service调用

Android clipChildren属性实例详解_Android

前言  前几天有在微博上推荐过一个博客,看他文章时发现了这个属性.有些属性不常用,但需要的时候非常有用,于是做了个例子,正好项目用到,与大家分享一下.  正文  一.效果图   看到这个图时你可以先想想如果是你,你怎么实现这个效果.马上想到用RelativeLayout?NO,NO,NO,,,  二.实现代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&qu

Android中Parcel用法详解_Android

本文实例讲述了Android中Parcel用法.分享给大家供大家参考,具体如下: Android 中Parcel 的使用,他是一个存储基本数据类型和引用数据类型的容器,在andorid 中通过IBinder来绑定数据在进程间传递数据. Parcel parcel = Parcel.obtain();// 获取一个Parcel 对象 下面就可以对其进行方法进行操作了,createXXX(),wirteXXX(),readXXX(), 其中dataPosition(),返回当前Parcel 当前对象

Android中Parcel用法详解

本文实例讲述了Android中Parcel用法.分享给大家供大家参考,具体如下: Android 中Parcel 的使用,他是一个存储基本数据类型和引用数据类型的容器,在andorid 中通过IBinder来绑定数据在进程间传递数据. Parcel parcel = Parcel.obtain();// 获取一个Parcel 对象 下面就可以对其进行方法进行操作了,createXXX(),wirteXXX(),readXXX(), 其中dataPosition(),返回当前Parcel 当前对象

Android SharedPreferences存储用法详解

先看Demo运行效果 SharedPreferences详解 SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置,比如Activity状态,Activity暂停时,将此activity的状态保存到SharedPereferences中:当Activity重载,系统回调方法onSaveInstanceState时,再从SharedPreferences中将值取出. SharedPreferences提供了java常规的Long.Int.Strin

Android WebView组件用法详解

本文实例讲述了Android WebView组件用法.分享给大家供大家参考,具体如下: 如果想WebView能够访问网络,必须在AndroidManifest.xml里面添加权限 <uses-permission android:name="android.permission.INTERNET" /> main.xml很简单,就是一个WebView <?xml version="1.0" encoding="utf-8"?&g

android文件管理器用法详解

很久没有写东西了,鉴于某某同学文件管理器不会,这里简单介绍一下,同时写一个demon,参考了网上别人写的代码,自己也学习学习,研究研究. 首先所谓文件管理器,看起来就是一个列表,列表里面是文件夹或者文件,首先把布局写出来,我想在最上方的左边显示文件的路径,右边显示该路径下的文件个数,其实还是一个遍历文件,然后用列表显示出来的问题.下面是ListView,用来显示文件列表.下面是运行的效果图: 主界面的布局文件如下: <?xml version="1.0" encoding=&qu

Android中Log用法详解

android.util.Log常用的方法有以下5个:Log.v() Log.d() Log.i() Log.w() 以及 Log.e() .根据首字母对应VERBOSE,DEBUG,INFO, WARN,ERROR. 1.Log.v 的调试颜色为黑色的,任何消息都会输出,这里的v代表verbose啰嗦的意思,平时使用就是Log.v("",""); 2.Log.d的输出颜色是蓝色的,仅输出debug调试的意思,但他会输出上层的信息,过滤起来可以通过DDMS的Logc