职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 626|回复: 1

RelativeLayout中的布局,自适应宽度布局

[复制链接]
fl 发表于 2011-9-8 11:16 | 显示全部楼层 |阅读模式
  


该图片中为android布局:
总布局为 RelativeLayout
AtLeft 为居左
<TextView android:background="#ff0000ff" android:id="@+id/tvwAtLeft"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:text="AtLeft" android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"></TextView>

AtRight为居右
<TextView android:layout_height="wrap_content"
android:layout_width="wrap_content" android:layout_alignParentTop="true"
android:layout_alignParentRight="true" android:id="@+id/tvwAtRight"
android:text="AtRight" android:background="#ff0000ff"></TextView>

Scroll为中间的布局
<TextView android:layout_height="wrap_content"
android:layout_alignParentTop="true" android:layout_toRightOf="@+id/tvwAtLeft"
android:layout_width="fill_parent" android:id="@+id/tvwScrolling"
android:layout_toLeftOf="@+id/tvwAtRight" android:text="Scrolling"
android:background="#FFFF0000"></TextView>

在中间的布局设置了android:layout_width="fill_parent"
android:layout_toRightOf="@+id/tvwAtLeft"
android:layout_toRightOf="@+id/tvwAtLeft"
三个属性后,那么将会有类似于LinearLayout布局中的layout_weight="1"(大于0的值)一样的效果,宽度进行了自适应

xml代码如下:

Xml代码  
<?xml version="1.0" encoding="utf-8"?>  
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    androidrientation="vertical" android:layout_width="fill_parent"  
    android:layout_height="fill_parent">  
    <TextView android:layout_height="wrap_content"  
        android:layout_width="wrap_content" android:layout_alignParentTop="true"  
        android:layout_alignParentRight="true" android:id="@+id/tvwAtRight"  
        android:text="AtRight" android:background="#ff0000ff"></TextView>  
    <TextView android:background="#ff0000ff" android:id="@+id/tvwAtLeft"  
        android:layout_height="wrap_content" android:layout_width="wrap_content"  
        android:text="AtLeft" android:layout_alignParentTop="true"  
        android:layout_alignParentLeft="true"></TextView>  
    <TextView android:layout_height="wrap_content"  
        android:layout_alignParentTop="true" android:layout_toRightOf="@+id/tvwAtLeft"  
        android:layout_width="fill_parent" android:id="@+id/tvwScrolling"  
        android:layout_toLeftOf="@+id/tvwAtRight" android:text="Scrolling"  
        android:background="#FFFF0000"></TextView>  
  
</RelativeLayout>  

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        androidrientation="vertical" android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TextView android:layout_height="wrap_content"
                android:layout_width="wrap_content" android:layout_alignParentTop="true"
                android:layout_alignParentRight="true" android:id="@+id/tvwAtRight"
                android:text="AtRight" android:background="#ff0000ff"></TextView>
        <TextView android:background="#ff0000ff" android:id="@+id/tvwAtLeft"
                android:layout_height="wrap_content" android:layout_width="wrap_content"
                android:text="AtLeft" android:layout_alignParentTop="true"
                android:layout_alignParentLeft="true"></TextView>
        <TextView android:layout_height="wrap_content"
                android:layout_alignParentTop="true" android:layout_toRightOf="@+id/tvwAtLeft"
                android:layout_width="fill_parent" android:id="@+id/tvwScrolling"
                android:layout_toLeftOf="@+id/tvwAtRight" android:text="Scrolling"
                android:background="#FFFF0000"></TextView>

</RelativeLayout>


但是如果中间再加多一个Scrolling2的TextView,意图想将Scrolling 和Scrolling2平分中间的部分,那么效果则不一样
代码:
Xml代码  
<?xml version="1.0" encoding="utf-8"?>  
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    androidrientation="vertical" android:layout_width="fill_parent"  
    android:layout_height="fill_parent">  
    <TextView android:layout_height="wrap_content"  
        android:layout_width="wrap_content" android:layout_alignParentTop="true"  
        android:layout_alignParentRight="true" android:id="@+id/tvwAtRight"  
        android:text="AtRight" android:background="#ff0000ff"></TextView>  
    <TextView android:background="#ff0000ff" android:id="@+id/tvwAtLeft"  
        android:layout_height="wrap_content" android:layout_width="wrap_content"  
        android:text="AtLeft" android:layout_alignParentTop="true"  
        android:layout_alignParentLeft="true"></TextView>  
    <TextView android:layout_height="wrap_content"  
        android:layout_alignParentTop="true" android:layout_toRightOf="@+id/tvwAtLeft"  
        android:layout_width="fill_parent" android:id="@+id/tvwScrolling"  
        android:text="Scrolling"  
        android:background="#FFFF0000" android:layout_toLeftOf="@+id/tvwScrolling2"></TextView>  
    <TextView android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_toLeftOf="@+id/tvwAtRight" android:id="@+id/tvwScrolling2" android:background="#ff00ff00" android:layout_width="fill_parent" android:layout_toRightOf="@+Id/tvwAtScrolling" android:text="Scrolling2"></TextView>  
  
</RelativeLayout>  

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        androidrientation="vertical" android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TextView android:layout_height="wrap_content"
                android:layout_width="wrap_content" android:layout_alignParentTop="true"
                android:layout_alignParentRight="true" android:id="@+id/tvwAtRight"
                android:text="AtRight" android:background="#ff0000ff"></TextView>
        <TextView android:background="#ff0000ff" android:id="@+id/tvwAtLeft"
                android:layout_height="wrap_content" android:layout_width="wrap_content"
                android:text="AtLeft" android:layout_alignParentTop="true"
                android:layout_alignParentLeft="true"></TextView>
        <TextView android:layout_height="wrap_content"
                android:layout_alignParentTop="true" android:layout_toRightOf="@+id/tvwAtLeft"
                android:layout_width="fill_parent" android:id="@+id/tvwScrolling"
                android:text="Scrolling"
                android:background="#FFFF0000" android:layout_toLeftOf="@+id/tvwScrolling2"></TextView>
        <TextView android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_toLeftOf="@+id/tvwAtRight" android:id="@+id/tvwScrolling2" android:background="#ff00ff00" android:layout_width="fill_parent" android:layout_toRightOf="@+Id/tvwAtScrolling" android:text="Scrolling2"></TextView>

</RelativeLayout>



效果如下




总结:
android 中搞比较灵活的布局,目前这套api来说还是不够理想啊,
尤其是不能通过百分比的方式来进行布局,即使能够通过linearlayout中的weight,也往往未能达到所需的目的。
这样一来,很多灵活的布局,尤其在自适应屏幕上面,设计者可得花上不少的心思了。
期望谷歌以及android的开发团队们,早日作出能够适用于百分比属性的布局,类似于html


大小: 8.6 KB

大小: 6.8 KB
查看图片附件

fossil 发表于 2011-9-8 11:17 | 显示全部楼层
推荐链接
20-30万急聘多名天才Java/MTA软件工程师
见证又一个准百万富翁的诞生!
3G培训就业月薪平均7K+,不3K就业不花一分钱!


您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-4-29 02:06 , Processed in 0.126305 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表