自动设置Android控件的占有屏幕的大小



在不同的物理屏幕下,可以自由设置某控件占有屏幕宽度的大小,方法如下:


                                                                      使输入框的宽度与屏幕宽度对应

现在的布局被设计成EditTextButton这两个控件的大小和它们的内容相适应,如图2所示:

图2. 宽度设置为“wrap_content”后的EditTextButton

这样做对于按钮来说没有什么问题,但是对文本框来说可能就不太好,因为用户可能会输入更长的字符串。所以最好是屏幕中没有用到的宽度给文本框使用。我们可以在LinearLayout中使用比重(Weight)属性来实现,具体来说是使用android:layout_weight这一属性字段。

比重的值是一个数字,这个数字用来表征每个View相对于它兄弟View所消耗的空间来说,可以使用的剩余的空间大小。可以理解为饮料的配方:“2份伏特加和1份咖啡甜酒”,这就意味着饮料中的三分之二是伏特加。例如:如果你给了一个View的比重是2,而另一个View的比重是1,那么他们的和是3,所以第一个View消耗剩余空间的三分之二,而第二个View消耗三分之一。如果你又添加了第三个View,它的比重是1,那么现在第一个View将会获得剩余空间的一半,另外两个则是四分之一。

默认所有的View的比重是0,所以如果你仅对一个View的比重定义为大于0的任何数,那么这个View将会拿到剩余的所有空间,而其他View则仅拥有他们所需要的空间。所以,为了让EditText把剩余空间填满,把它的比重设置为1,同时让按钮没有比重就可以实现了。

    <EditText
        android:layout_weight="1"
        ... />

当你定义了比重时,为了提高布局的效率,我们把EditText的宽度设置为0(0dp)。将宽度设置为0有利于提高布局性能,因为使用"wrap_content"作为宽度的话需要系统计算控件的宽度,而这是不必要的,因为这个宽度值需要另一个控件的宽度计算结果,以此来进一步的填满屏幕的宽度。

    <EditText
        android:layout_weight="1"
        android:layout_width="0dp"
        ... />

图3展示了把比重全部分配给EditText后的运行结果:

图3. EditText拥有了布局的所有比重,所以它填满了LinearLayout剩余的空间

现在,修改后的布局文件应该是这样的:

复制代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">
    <EditText android:id="@+id/edit_message"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:hint="@string/edit_message" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_send" />
</LinearLayout>

http://www.cnblogs.com/jdneo/p/3439108.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值