`
ericbaner
  • 浏览: 177606 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

RelativeLayout和layout_weight的异曲同工之妙

 
阅读更多

 

Android应用UI开发,对以上布局,可以使用RelativeLayout, 即:

 

<RelativeLayout 
		android:layout_width="fill_parent" android:layout_height="wrap_content"
		android:gravity="center_vertical">
		
		<Button android:id="@+id/btn1"
			android:layout_width="wrap_content" android:layout_height="wrap_content"
			android:layout_alignParentRight="true"
			android:text="search"/>
			
		<EditText android:id="@+id/edit1"
			android:layout_width="fill_parent" android:layout_height="wrap_content"
			android:layout_toLeftOf="@id/btn1"
			android:hint="input the key word"/>
		
</RelativeLayout>
 

 

也可以使用LinearLayout的 layout_weight属性,即

 

<LinearLayout 
		android:layout_width="fill_parent" android:layout_height="wrap_content"
		android:gravity="center_vertical">
		<EditText
			android:layout_width="wrap_content" android:layout_height="wrap_content"
			android:hint="input the key word"  android:layout_weight="1"/>
			
		<Button 
			android:layout_width="wrap_content" android:layout_height="wrap_content"
			android:text="search"/>
		
</LinearLayout>

 

再多说几句layout_weight, Android SDK document中对layout_weight有如下解释:

 

Specifies how much of the extra space in the layout to be allocated to the View.

LinearLayout supports assigning a weight to individual children. This attribute assigns an "importance" value to a view, and allows it to expand to fill any remaining space in the parent view. Default weight is zero

calculation to assign any remaining space between child

space assign to child = (child individual weight) / (sum of weight of every child in Linear Layout)

Example (1): if there are three text boxes and two of them declare a weight of 1, while the third one is given no weight (0), then remaining space assign to

1st text box = 1/(1+1+0) 2nd text box = 1/(1+1+0) 3rd text box = 0/(1+1+0)

Example (2) : let's say we have a text label and two text edit elements in a horizontal row. The label has no layout_weight specified, so it takes up the minimum space required to render. If the layout_weight of each of the two text edit elements is set to 1, the remaining width in the parent layout will be split equally between them (because we claim they are equally important).

calculation : 1st label = 0/(0+1+1) 2nd text box = 1/(0+1+1) 3rd text box = 1/(0+1+1)

If the first one text box has a layout_weight of 1 and the second text box has a layout_weight of 2, then one third of the remaining space will be given to the first, and two thirds to the second (because we claim the second one is more important).

calculation : 1st label = 0/(0+1+2) 2nd text box = 1/(0+1+2) 3rd text box = 2/(0+1+2)

 

值得注意的是, layout_weight是对LinearLayout里剩余或多余的空间再分配给指定layout_weight的view元素。因此,在对每个view元素的layout_width或layout_height写不同的值是可能有不同的结果的。 对本文最上面的图表示的一个文本编辑框和一个按钮,只有两个view元素, 文本框的layout_weight=1,而layout_width写fill_parent或wrap_content都是一样的。但若有两个文本框和一个按钮同在一行,这两个文本框的layout_weight一个为1,一个为2,想要的效果是一个文本框的长度是另一个的2倍,要达到此效果,两文本框的layout_width须设为0dip, 这样由layout_weight要控制每个文本框的宽度分配。

 

分享到:
评论

相关推荐

    Android_Layout_之_RelativeLayout_代码实现相对布局

    相比于 AbsoluteLayout,RelativeLayout 提供了更加灵活和强大的布局方式。 Android 中的 RelativeLayout 是通过 android.widget.RelativeLayout 实现的,这个类继承自 android.view.ViewGroup.LayoutParams,并...

    Android layout_weight使用方法及实例

    需要注意的是,`layout_weight`属性只对`LinearLayout`有效,对于其他布局如RelativeLayout、ConstraintLayout等则无效。此外,`layout_weight`虽然强大,但也会带来性能上的轻微损失,因为它需要额外的计算步骤。...

    Android移动开发-Weight计算.zip

    1. `layout_weight`仅适用于LinearLayout,对其他布局如RelativeLayout、ConstraintLayout等无效。 2. 当设置`layout_weight`时,`layout_width`或`layout_height`应设为0dp(match_parent 或 wrap_content 不适用于...

    Android 五种Layout 布局

    在Android开发中,布局(Layout)是构建用户界面的基础元素,它定义了屏幕上各个组件的排列方式和相互关系。本文将深入探讨Android的五种主要布局:LinearLayout、RelativeLayout、FrameLayout、GridLayout以及...

    weightDemo

    本教程将深入探讨`layout_weight`属性,帮助你更好地理解和运用这一功能。 `layout_weight`属性在LinearLayout中起着决定性作用,LinearLayout是一种水平或垂直排列视图的布局。当LinearLayout的`orientation`设置...

    Android_layout_详细介绍

    在Android应用开发中,布局(Layout)是构建用户界面的关键组成部分,它决定了界面元素如何在屏幕上组织和排列。以下是对几种常见布局的深入解析: #### LinearLayout(线性布局) 线性布局是最常用的布局之一,它...

    Android weight属性demo

    - `weight`属性只适用于LinearLayout,对于其他布局管理器(如RelativeLayout、ConstraintLayout)并不适用。 - 权重分配的空间是在所有非零`layout_weight`的子视图之间进行的,因此,如果没有设置`layout_weight`...

    Android应用中通过Layout_weight属性用ListView实现表格

    今天主要说的是对Layout_weight属性的完全解析,以及利用Layout_weight这个属性使用ListView来实现表格的效果,我们都知道Android里面专门有一个TableLayout来实现表格的,说实话,我平常开发中用TableLayout还是...

    Hello_layout_demo

    本教程将深入探讨`Hello_layout_demo`中包含的五个关键布局:LinearLayout、RelativeLayout、GridLayout、TableLayout以及TabLayout。这些布局各有特点,适应不同的UI设计需求。 1. **LinearLayout**:线性布局是最...

    android mars视频代码 Layout Layout _03源码 RelativeLayout

    www.mars-droid.com/Android开发视频教程 RelativeLayout代码 源码 mars老师讲课 android 视频源码 Layout_03(在此特别感谢mars的无私奉献,此代码为跟随视频边学边做的)

    class_layout_demo.rar_DEMO

    `class_layout_demo` 提供了一个生动的示例,帮助开发者了解和掌握布局编程的基本技巧。这个DEMO展示了如何通过代码创建和管理不同的布局,从而为用户提供直观、美观且功能丰富的交互体验。 布局类型主要有以下几种...

    android_relativeLayout_demo

    通过这个“android_relativeLayout_demo”,开发者可以学习到如何使用`RelativeLayout`进行视图布局,理解其属性和工作原理,这对于构建自定义和交互丰富的Android界面至关重要。同时,了解不同布局之间的优缺点和...

    Chapter02_Layout_Project.zip

    《布局设计:深入理解Chapter...通过对"Chapter02_Layout_Project.zip"的深入学习和实践,开发者不仅可以掌握布局设计的基本原理,还能了解到更高级的布局技术,从而构建出更加高效、美观且适应性强的Android应用界面。

    RelativeLayout相对布局属性

    上述示例中,我们创建了一个`RelativeLayout`作为根布局,并在其中放置了三个子视图:一个`TextView`、一个`Button`和一个`ImageView`。`TextView`设置为居中并顶部对齐于父容器;`Button`位于`TextView`下方且水平...

    Android RelativeLayout 的应用

    android:id="@+id/main_layout" android:layout_width="match_parent" android:layout_height="match_parent"&gt; android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height=...

    android布局属性RelativeLayout详解.

    Android 布局属性 RelativeLayout 是 Android 中常用的布局方式之一,通过它可以实现复杂的界面布局。下面是 RelativeLayout 的主要属性详解: 第一类:属性值为 true 或 false 1. android:layout_...

    界面布局之相对布局RelativeLayout(代码)

    相对布局(RelativeLayout)是Android SDK提供的一种布局方式,它允许视图组件相对于其他组件或布局的边缘进行定位,从而实现灵活的界面设计。在本教程中,我们将深入探讨相对布局及其在代码中的实现。 首先,相对...

    动态控制RelativeLayout的组件

    在Android应用开发中,动态控制`RelativeLayout`的组件是一项重要技能,它可以极大地增强应用的交互性和用户体验。通过理解并熟练运用`RelativeLayout`的位置规则、动态添加删除组件、响应事件以及添加动画效果,...

    android_QQ_例子

    用Eclipse加载项目工程 android:layout_width="match_parent" ... android:layout_weight="0.66" android:background="@drawable/blue_bg" android:orientation="vertical" &gt; &lt;RelativeLayout android:layout

    Android 相对布局 RelativeLayout 属性

    - **`android:layout_centerHorizontal`** 和 **`android:layout_centerVertical`**:这两个属性分别用于使视图在水平方向或垂直方向上居中,非常适合创建对称的布局设计。 - **`android:layout_centerInParent`**...

Global site tag (gtag.js) - Google Analytics