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

在开发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覆盖掉。

最后的界面:

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

时间: 2024-07-29 14:39:40

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

布局-Android中不同xml文件中id可以重复么?

问题描述 Android中不同xml文件中id可以重复么? Android中如果两个layout布局文件中都有一个TextView控件,而且拥有同样的id,那样的话会乱套嘛? 比如我有a.xml,中间有控件TextView id为tv,有b.xml,中间有控件TextView id为tv,在R文件中能看到id内部类中只有一个tv常量,调用时是因为用之前是用色图ContentView设置了对应的布局所以不会混乱嘛,还是说就是会混乱的呢,我记得以前好像用的时候用混乱过,但是今天听老师讲课说是可行的,

Android 中Manifest.xml文件详解

Android 中Manifest.xml文件详解 每一个Android项目都包含一个清单(Manifest)文件--AndroidManifest.xml,它存储在项目层次中的最底层.清单可以定义应用程序及其组件的结构和元数据. 它包含了组成应用程序的每一个组件(活动.服务.内容提供器和广播接收器)的节点,并使用Intent过滤器和权限来确定这些组件之间以及这些组件和其他应用程序是如何交互的. 它还提供了各种属性来详细地说明应用程序的元数据(如它的图标或者主题)以及额外的可用来进行安全设置和单

Android中利用xml文件布局修改Helloworld程序_Android

Android环境布置完毕,直接就是一个Helloworld程序,详情请看<利用adt-bundle轻松搭建Android开发环境与Hello world(Linux)>这使得很多人难以理清整个Android项目的基本结构.其实安卓项目,与其它Java工程的项目,SSH.Servlet等,都是采取Java与XML文件联合的方式,形成一个工程的. 有几个文件是需要熟知的.如下图: MainActivity.java是整个安卓工程的入口, 其中,里面的protected void onCreate

Android中利用xml文件布局修改Helloworld程序

Android环境布置完毕,直接就是一个Helloworld程序,详情请看<利用adt-bundle轻松搭建Android开发环境与Hello world(Linux)>这使得很多人难以理清整个Android项目的基本结构.其实安卓项目,与其它Java工程的项目,SSH.Servlet等,都是采取Java与XML文件联合的方式,形成一个工程的. 有几个文件是需要熟知的.如下图: MainActivity.java是整个安卓工程的入口, 其中,里面的protected void onCreate

java-android中的xml文件的spinner标签的prompt属性出错肿么办

问题描述 android中的xml文件的spinner标签的prompt属性出错肿么办 android中的xml文件的spinner标签的prompt属性出错肿么办 prompt资源来自哪里呢? 解决方案 prompt属性不是自己设的吗?怎么会出错?

在android模拟器中解析不到tomcat中的xml文件,

问题描述 在android模拟器中解析不到tomcat中的xml文件, 在android模拟器中解析不到tomcat中的xml文件,但是在浏览器中使用相同的地址,却可以访问 package xtm.mp3player; import xtm.download.HttpDownloader; import android.app.ListActivity; import android.os.Bundle; import android.util.Log; import android.view.

android studio中的xml文件报错,eclipse正常不报错

问题描述 android studio中的xml文件报错,eclipse正常不报错 android:background="@drawable/one_home_page_text" 这张图片确实有,错误提示 Error:(138, 41) No resource found that matches the given name (at 'background' with value '@drawable/one_home_page_text'). eclipse中不报错,倒进stu

android下载tomcat中的xml文件

问题描述 我需要用android下载tomcat中的xml文件,在我的tomcat中新建一个项目叫mp3,其中有一个xml文件.该xml文件中的内容是:<?xmlversion="1.0"encoding="ISO-8859-1"?><!--服务器端一个mp3文件和一个lrc文件信息--><resources><resource><id>0001</id><mp3_name>a1.m

Android实现在xml文件中引用自定义View的方法分析

本文实例讲述了Android实现在xml文件中引用自定义View的方法.分享给大家供大家参考,具体如下: 在xml中引用自定义view 方法一: <view class="com.test.copytext.CopyText" android:layout_width="fill_parent" android:layout_height="wrap_content" /> 方法二: <view class="com.