开发者社区> 李牙刷儿> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

关于Android中界面XML文件的绘制顺序

简介: 在开发Android程序的时候经常会遇到写界面XML文件的问题,其中感触最深的就是一些控件显示不出来或者显示的位置不对。通过不断地调试终于发现了一些原因,现在写出来,希望可以帮到大家。   之前我写过一个很简单的界面: <?xmlversion="1.0"encoding="utf-8" ?> <LinearLayoutxmlns:android="http://s
+关注继续查看

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

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

<?xmlversion="1.0"encoding="utf-8" ?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
 <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
  android:layout_height="fill_parent">
 <ListViewandroid:id="@+id/listview_mibTree"
 android:layout_height="wrap_content"
   android:layout_width="fill_parent"
   android:paddingTop="15dp"
   android:paddingBottom="15dp"
 android:layout_alignParentTop="true"  />
  <Buttonandroid:id="@+id/btn_setInMain"
   android:layout_width="fill_parent"
   android:layout_height="60dp"
   android:text="设置"
   android:gravity="center"
   android:textSize="15sp"
    android:layout_alignParentBottom="true"
    android:layout_below="@id/listview_mibTree"/>
  </RelativeLayout>
</LinearLayout>





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

<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
  android:layout_height="fill_parent"
    android:orientation="vertical">
   <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
        >
          <Button
           android:id="@+id/btn_setInMain"
           android:layout_width="fill_parent"
          android:layout_height="60dp"
            android:text="设置"
            android:gravity="center"
            android:textSize="15sp"
          android:layout_alignParentBottom="true"/>
       <ListView
           android:id="@+id/listview_mibTree"
          android:layout_height="wrap_content"
          android:layout_width="fill_parent"
            android:paddingTop="15dp"
          android:paddingBottom="15dp"
           android:layout_alignParentTop="true"
          android:layout_above="@id/btn_setInMain"
            ></ListView>
 
    </RelativeLayout>
 
</LinearLayout>





 

这时先解析的是按钮控件,所以已经现将其绘制到了界面的底部,这时就算ListView的内容再多,也不会影响Button的显示。而且其中ListView有一行代码:
android:layout_above="@id/btn_setInMain"
所以在编写界面的时候,只要搞清楚了其绘制的顺序,有很多问题就可以解决了。

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

最后的界面:


所以只要弄清楚了其绘制的顺序,有的问题就容易解决了。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
java积累——dom4j读取xml文件
java积累——dom4j读取xml文件
0 0
目标检测VOC数据集标注XML文件转EasyDL数据集标注Json格式
目标检测VOC数据集标注XML文件转EasyDL数据集标注Json格式
0 0
建造者模式实例数据拼接 java生成真实XML文件
建造者模式实例数据拼接 java生成真实XML文件
0 0
xml文件报错Element ‘beans‘ cannot have character [children), because the type‘s content type is element-
xml文件报错Element ‘beans‘ cannot have character [children), because the type‘s content type is element-
0 0
sprintboot文件上传XML文件并解析
sprintboot文件上传XML文件并解析
0 0
目标检测脚本 | 根据xml文件在原图上显示边界框并保存
目标检测脚本 | 根据xml文件在原图上显示边界框并保存
0 0
Jdom生成xml文件时的特殊字符问题
Jdom生成xml文件时的特殊字符问题
0 0
python读取linux上的xml文件
python远程读取linxu服务器上的xml文件
0 0
python创建xml文件
python创建xml文件
0 0
Spring 源码阅读 10:Spring 中自定义的 EntityResolver 是如何获取 Spring XML 配置文件需要的约束文件的
这篇是为了填 [Spring 源码阅读 07:加载 BeanDefinition 的过程(资源加载阶段)]中留的一个坑
0 0
+关注
李牙刷儿
Android开发者&amp;前端菜鸟,专注于跨平台、热修复领域
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Android应用启动速度和内存优化实践
立即下载
Android内存泄漏自动化链路分析组件Probe
立即下载
复杂环境下的视觉同时定位与地图构建
立即下载