Android Hack1 使用weight属性实现视图的居中显示

本文地址:http://www.cnblogs.com/wuyudong/p/5898403.html,转载请注明源地址。

如果要实现如下图所示的将按钮居中显示,并且占据父视图的一半,无论屏幕是否旋转

合用weightSum属性和layout_weight属性

不同Android设备的尺寸往往是不同的。作为开发者,我们需要创建适用于不同尺寸屏幕的XML文件。硬编码是不可取的,因此需要其他方法来组织视图。

本文分析如何合用layout_weight和weightSum这两个属性来填充布局内部的任意剩余空间。android:weightSum的开发文档里的一段描述与我们现在想要实现的功能类似,文档内容如下:

“定义weight总和的最大值。如果未指定该值,以所有子视图的layout_weight属性的累加值作为总和的最大值。一个典型的案例是:通过指定子视图的layout_weight属性为0.5,并设置LinearLayout的weightSum属性为1.0,实现子视图占据可用宽度的50%。”

设想一个场景:我们要在盒子里放置其他物体。盒子可用空间的比例就是weightSum,盒子中每个物体可用空间的比例就是layout_weight。例如,盒子的WeightSum是1,我们需要往盒子里放置两个物体:物体A和物体B。物体A的layout_weight为0.25,物体B的layout_weight为0.75。那么,物体A可以占据盒子25%的空间,而物体B可以占据剩下的75%的空间。

我们为父视图指定一个weightSum,然后指定Button的android:layout_weight属性为weightSum的一半。XML文件的源码如下所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ffffff"
    android:gravity="center"
    android:orientation="horizontal"
    android:weightSum="1" >

    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:text="Click me" />

</LinearLayout>

当开发者需要根据比例分配布局可用空间的时候,使用LinearLayout的weight属性是很有必要的,这避免了使用硬编码的方式带来的副作用。如果目标平台是Honeycomb并且使用Fragment,读者会发现绝大多数案例中都是使用weight在布局文件中为Fragment分配空间。深入理解如何使用weight会为读者增添一项重要技能。

时间: 2024-08-05 01:34:48

Android Hack1 使用weight属性实现视图的居中显示的相关文章

使用weight属性实现视图的居中显示

有的时候我们开发一个产品的时候需要让其中某个控件的宽度或高度占据其父容器的宽度或高度的一半显示,这个时候由于设备尺寸的限制,做到在每个设备上都具有同样的效果的话,我们就需要用到weightSum属性和layout_weight属性. 具体的实现过程分析如下: 首先为父容器指定一个weightSum,然后为其子控件的layout_weight属性值设为weightSum的一半,这个时候,就实现了占据其一半的效果. 1 <LinearLayout xmlns:android="http://s

Android开发技巧一--weight属性实现视图的居中(半)显示

面试时,一位面试官问到:"如果我想讲按钮居中显示,并且占据其父视图宽度的一半,应该怎么做到呢?"即实现这种效果: 我们使用weightSum属性和layout_weight属性实现这一要求: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

Android之使用weight属性实现控件的按比例分配空间

从今天開始,把看书时候的知识点整理成博客, 这个比較简单,预计有经验的都用过,weight属性 在做Android布局的时候,常常遇到须要几个控件按比例分配空间的情况 比方下图效果 在底部设置两个button,占领底部宽度一部分的同一时候,保持1:3的比例, 当然了,这么难看的布局用处不大,仅是用来说明weight的使用方法 布局代码例如以下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&q

Android LinearLayout中weight属性的意义与使用方式

layout_weight 分割父级容器的比例 效果 调整一下: 不设置则不参与父级容器的分割,设置了以后则参与

从源码切入 透彻理解Android的weight属性

最近在看一本古董书<50 Android Hacks>,而书中开篇的第一个Hack就是"使用weight属性实现视图的居中现实". 事实上weight是一个使用简单,但却又十分强大的属性.但关于其的实现原理和使用细节我们却不一定真正深入的进行过理解. 今天我们就来由浅入深,从源码中去好好的研究研究这个东西.看看它有哪些可能被我们忽视的地方. 以上述书中的案例来说,它的需求很简单,请实现"让一个按钮居中显示,且占据屏幕一半的宽度". 要实现这个需求也许有很

LinearLayout的weight属性的解释

刚刚在stackoverflow上看到一个关于android LinearLayout的weight属性的解释,觉得解释很透彻,帖过来和大家分享一下. In a nutshell, 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.

【Android 开发笔记】weight属性

混合使用weightSum和layout_weight 先看效果,button占据屏幕宽度的一半. 再看开发文档中的描述. "定义weight总和的最大值.如果未指定该值,以所有子视图的layout_weight属性的累加值作为总和的最大值.一个典型的案例是:通过指定子视图的layout_weight属性为0.5,并设置LinearLayout的weightSum属性为1.0,实现子视图占据可用宽度的50." XML文件的源码. <LinearLayout xmlns:andro

android weight 属性正解(转载)

LinearLayout 在androidUI布局中使用非常多,它其中有个很方便又很有意思的属性 weight ,这个属性理解起来不是那么简单的,而真正理解了又觉得非常简单! 下面就通过一个例子来说明: 布局代码: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/androi

android gravity属性 和 weight属性

来看这个布局文件 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="fill_parent" 5