android xml布局文件的绘制顺序

在开发Android程序的时候经常会遇到写界面XML文件的问题,其中感触最深的就是一些控件显示不出来或者显示的位置不对。通过不断地调试终于发现了一些原因,现在写出来,希望可以帮到大家。

  之前我写过一个很简单的界面:

Xml代码   收藏代码
  1. <?xmlversionxmlversionxmlversionxmlversion="1.0"encoding="utf-8" ?>    
  2. <LinearLayoutxmlns:androidLinearLayoutxmlns:androidLinearLayoutxmlns:androidLinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"    
  3. android:layout_width="fill_parent"    
  4. android:layout_height="fill_parent"    
  5. android:orientation="vertical">    
  6.  <RelativeLayoutxmlns:androidRelativeLayoutxmlns:androidRelativeLayoutxmlns:androidRelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"    
  7.    android:layout_width="fill_parent"    
  8.   android:layout_height="fill_parent">    
  9.  <ListViewandroid:idListViewandroid:idListViewandroid:idListViewandroid:id="@+id/listview_mibTree"    
  10.  android:layout_height="wrap_content"    
  11.    android:layout_width="fill_parent"    
  12.    android:paddingTop="15dp"    
  13.    android:paddingBottom="15dp"    
  14.  android:layout_alignParentTop="true"  />    
  15.   <Buttonandroid:idButtonandroid:idButtonandroid:idButtonandroid:id="@+id/btn_setInMain"    
  16.    android:layout_width="fill_parent"    
  17.    android:layout_height="60dp"    
  18.    android:text="设置"    
  19.    android:gravity="center"    
  20.    android:textSize="15sp"    
  21.     android:layout_alignParentBottom="true"    
  22.     android:layout_below="@id/listview_mibTree"/>    
  23.   </RelativeLayout>    
  24. </LinearLayout>    

   但是这样的界面如果ListView的内容太长的话,底部的按钮就消失了。这是因为,系统在解析这个.XML文件的时候应该是顺序解析顺序绘制的一个过程,根据这个XML文件的逻辑,会先绘制ListView,之后在绘制底部的按钮,言下之意就是先绘制ListView,如果ListView的内容过多,那么势必为需要向下滑动浏览,ListView自己的内容都展示不完,哪里又还有位置留给底部的按钮呢?

  所以正确的逻辑应该是:

Xml代码   收藏代码
  1. <?xmlversionxmlversionxmlversionxmlversion="1.0"encoding="utf-8"?>    
  2. <LinearLayoutxmlns:androidLinearLayoutxmlns:androidLinearLayoutxmlns:androidLinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"    
  3.    android:layout_width="fill_parent"    
  4.   android:layout_height="fill_parent"    
  5.     android:orientation="vertical">    
  6.    <RelativeLayoutxmlns:androidRelativeLayoutxmlns:androidRelativeLayoutxmlns:androidRelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"    
  7.       android:layout_width="fill_parent"    
  8.       android:layout_height="fill_parent"    
  9.         >    
  10.           <Button    
  11.            android:id="@+id/btn_setInMain"    
  12.            android:layout_width="fill_parent"    
  13.           android:layout_height="60dp"    
  14.             android:text="设置"    
  15.             android:gravity="center"    
  16.             android:textSize="15sp"    
  17.           android:layout_alignParentBottom="true"/>    
  18.        <ListView    
  19.            android:id="@+id/listview_mibTree"    
  20.           android:layout_height="wrap_content"    
  21.           android:layout_width="fill_parent"    
  22.             android:paddingTop="15dp"    
  23.           android:paddingBottom="15dp"    
  24.            android:layout_alignParentTop="true"    
  25.           android:layout_above="@id/btn_setInMain"    
  26.             ></ListView>    
  27.      
  28.     </RelativeLayout>    
  29.      
  30. </LinearLayout>   

   这时先解析的是按钮控件,所以已经现将其绘制到了界面的底部,这时就算ListView的内容再多,也不会影响Button的显示。而且其中ListView有一行代码:

android:layout_above="@id/btn_setInMain"
所以在编写界面的时候,只要搞清楚了其绘制的顺序,有很多问题就可以解决了。

表明ListView是绘制在Button之上的,所以该ListView不会把Button覆盖掉。

最后的界面:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值