<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/rl_product_parent" 
    android:background="@drawable/login_bg">
    <RelativeLayout 
        android:id="@+id/rl_product_main"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="51dp"
    <ImageView 
        android:id="@+id/iv_jiuyingbao"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="5dp"
        android:src="@drawable/jiuyingbao"/>
    <ImageView 
        android:id="@+id/iv_zhinengcun"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/iv_jiuyingbao"
        android:layout_alignTop="@id/iv_jiuyingbao"
        android:src="@drawable/zhinengcun"/>
    <ImageView 
        android:id="@+id/iv_diydai"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@id/iv_zhinengcun"
        android:layout_toRightOf="@id/iv_jiuyingbao"
        android:layout_alignBottom="@id/iv_jiuyingbao"
        android:src="@drawable/diydai"/>
    <ImageView 
        android:id="@+id/iv_wodezhanghu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/iv_jiuyingbao"
        android:layout_alignLeft="@id/iv_jiuyingbao"
        android:layout_alignRight="@id/iv_diydai"
        android:layout_marginTop="5dp"
        android:src="@drawable/wodezhanghu"/>
    <ImageView 
        android:id="@+id/iv_dangmianfu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/iv_wodezhanghu"
        android:layout_alignLeft="@id/iv_wodezhanghu"
        android:layout_marginTop="5dp"
        android:src="@drawable/dangminafu"/>
     <ImageView 
         android:id="@+id/iv_zhuanzhang"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignTop="@id/iv_dangmianfu"
         android:layout_alignRight="@+id/iv_wodezhanghu"
         android:src="@drawable/zhuanzhang"/>
      </RelativeLayout>
</RelativeLayout>

二:java代码

		rl_product_main = (RelativeLayout) main.findViewById(R.id.rl_product_main);
		RelativeLayout.LayoutParams rparams = new RelativeLayout.LayoutParams(rl_product_main.getLayoutParams());
		//说明当前相对布局距离父控件的顶部100像素,注意是像素
		rparams.topMargin = 100;
		//宽高是包裹内容
		rparams.width = RelativeLayout.LayoutParams.WRAP_CONTENT;
		rparams.height = RelativeLayout.LayoutParams.WRAP_CONTENT;
		 * 一个参数的方法:addRule (int verb)
		 * 给当前相对布局添加一个布局规则,即一些属性等,但是这个布局规则不能涉及到其他兄弟姐妹;或者这个布局规则是一个布尔类型的,设置了即为true,不设置即为false
		 * 两个参数的方法:addRule (int verb, int anchor)
		 * 给当前相对布局添加一个布局规则,这个布局规则可以涉及到其它兄弟姐妹元素,此时第二个参数即为所涉及到的兄弟姐妹的id;或者这个布局规则是一个布尔类型的,此时
		 * 第二个参数即为RelativeLayout.TRUE代表为true或者0代表为false
		rparams.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
		rl_product_main.setLayoutParams(rparams);
一:布局文件<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/rl_product_parent
有些时候我们需要动态的设置-某些 布局 的位置,(也是 代码 适配)一:父 布局 是,线性 布局 :xml文件如下<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizont
TextView txt1 = new TextView(this); RelativeLayout .LayoutParams params = new RelativeLayout .LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); params.addRule(Relat...
<?xml version="1.0" encoding="utf-8"?> < RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.an
android用java为编程语言,很多地方都很相似,界面这块也很像。我们都知道java画界面是一行一行 代码 去添加界面的控件的,所以那是一件让人崩溃的事。Android完美解决了这一问题,Android的界面 布局 是通过xml文件配置的,加上强大的ide画界面就非常方便了。但xml 布局 局限就是不能动态修改,所以还是需要像java那样在 代码 中动态添加view。 本人也是新手一个,没有研究全部 布局 ,只
通常我们使用XML来书写Android的图形界面,XML虽然编写方便,但是在某些情况下不如JAVA 代码 灵活,所以在某些环境下还是必须使用JAVA 代码 来编写界面。我们以下XML 代码 为例,编写相应的JAVA 代码 。 < RelativeLayout android:id="@+id/drawer_info" android:layout_width="match_par
### 回答1: 使用XML 布局 RelativeLayout 中的View的好处是可以更方便地定义子视图之间的相对位置,从而 实现 更复杂的 布局 效果。如果不使用XML 布局 RelativeLayout ,可能需要编写大量的 代码 来设置每个子视图的位置和大小,这样不仅麻烦,而且容易出错。 ### 回答2: 相较于其他 布局 RelativeLayout 更加灵活,可以根据视图的相对位置为子视图进行 布局 ,但它的缺点是每个子视图都需要经过完整的视图层次结构的测量和 布局 ,会增加应用程序的加载时间。因为每个子视图的位置都与其他视图有关,这意味着 RelativeLayout 在同一页面上的每个视图必须按正确的顺序进行定义。 为了减少 RelativeLayout 的加载时间,可以使用其他方法替代XML 布局 : 1. 使用 代码 布局 LayoutParams LayoutParams允许在 代码 中设置相对位置来 布局 RelativeLayout 中的视图。LayoutParams是 RelativeLayout 的一个内部类,用于指定视图的高度、宽度和相对位置等属性。您可以使用LayoutParams在运行时动态添加、删除和更改 RelativeLayout 中的视图。 2. 使用ConstraintLayout 布局 ConstraintLayout是一个更灵活的 布局 ,可以减少 RelativeLayout 的加载时间。它可以通过添加约束限制来定义视图之间的关系,并自动调整视图的位置以适应不同大小的屏幕。ConstraintLayout的约束限制比 RelativeLayout 更精细,可以指定视图之间的距离、宽度比例、最小距离等。此外,ConstraintLayout的层次结构比 RelativeLayout 简单,可减少视图树的深度。 总之,在使用 RelativeLayout 布局 时,避免使用过于复杂的视图层次结构,在必要时可以使用 代码 布局 LayoutParams和使用灵活的ConstraintLayout 布局 来代替XML 布局 ,以加速 布局 加载时间。 ### 回答3: RelativeLayout 是Android中很重要的一个 布局 容器,在这个容器中,可以通过设置View之间的相对位置关系,对View进行非常灵活的 布局 。相比于其它 布局 容器, RelativeLayout 更为灵活和自由,能够 实现 比较复杂的 布局 效果。但是在 RelativeLayout 中使用XML 布局 时,往往会显得冗长且难以维护,因此,有些开发者倾向于使用Java 代码 进行 RelativeLayout 布局 。 以下是通过Java 代码 布局 RelativeLayout 容器的一些方法: 1.使用LayoutParams控制控件的位置和大小 RelativeLayout .LayoutParams是 RelativeLayout 容器中位置和尺寸控制的核心,LayoutParams提供了非常多的属性设置选项,可以让 布局 实现 各种相对位置、大小和对齐方式。可以通过程序来为LayoutParams设置各种属性,从而 实现 复杂的相对位置 布局 。如下: RelativeLayout layout = new RelativeLayout (this); RelativeLayout .LayoutParams lp = new RelativeLayout .LayoutParams( RelativeLayout .LayoutParams.WRAP_CONTENT, RelativeLayout .LayoutParams.WRAP_CONTENT); lp.addRule( RelativeLayout .CENTER_IN_PARENT); Button myButton = new Button(this); myButton.setText("Click Me"); myButton.setLayoutParams(lp); layout.addView(myButton); setContentView(layout); 2.使用Java 代码 设置各个View之间的相对位置关系 相对 布局 中的每个View都是根据其他的View依次排列而成的,因此,如果要 布局 RelativeLayout ,必须清楚每个View和其他View之间的相对位置。可以通过LayoutParams类中提供的addRule()方法来指定每个View的相对规则。如下: LayoutParams params1 = new LayoutParams(100, 100); params1.addRule( RelativeLayout .ALIGN_PARENT_TOP); params1.addRule( RelativeLayout .ALIGN_PARENT_LEFT); Button button1 = new Button(context); button1.setText("1"); button1.setLayoutParams(params1); LayoutParams params2 = new LayoutParams(100, 100); params2.addRule( RelativeLayout .BELOW, button1.getId()); params2.addRule( RelativeLayout .ALIGN_PARENT_LEFT); Button button2 = new Button(context); button2.setText("2"); button2.setLayoutParams(params2); layout.addView(button1); layout.addView(button2); setContentView(layout); 如上所示,我们先创建了两个Button,并为他们分别设置了一些相对位置关系,最后将它们添加到了 RelativeLayout 容器中。 总结一下,通过Java 代码 实现 RelativeLayout 布局 的好处在于可以动态地控制控件的属性和相互关系,使程序更为灵活。但是,编写Java 代码 可能会比使用XML 布局 更加复杂,需要更为深入的Android开发经验和对控件的属性、方法等有更为深入的了解才能更好地掌握 RelativeLayout 容器的使用。