`
asialee900715
  • 浏览: 33153 次
社区版块
存档分类
最新评论

android xml布局文件的绘制顺序

 
阅读更多

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

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

<?xmlversionxmlversion="1.0"encoding="utf-8" ?>  
<LinearLayoutxmlns:androidLinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"  
android:layout_width="fill_parent"  
android:layout_height="fill_parent"  
android:orientation="vertical">  
 <RelativeLayoutxmlns:androidRelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"  
   android:layout_width="fill_parent"  
  android:layout_height="fill_parent">  
 <ListViewandroid:idListViewandroid: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:idButtonandroid: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自己的内容都展示不完,哪里又还有位置留给底部的按钮呢?

  所以正确的逻辑应该是:

<?xmlversionxmlversion="1.0"encoding="utf-8"?>  
<LinearLayoutxmlns:androidLinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"  
   android:layout_width="fill_parent"  
  android:layout_height="fill_parent"  
    android:orientation="vertical">  
   <RelativeLayoutxmlns:androidRelativeLayoutxmlns: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覆盖掉。

最后的界面:



 

  • 大小: 41.1 KB
分享到:
评论

相关推荐

    android界面布局详解

    这个过程涵盖了创建XML布局文件、设置TextView的ID和文本,以及在Activity中加载这个布局。 6、布局类型 Android提供了多种布局类型,如LinearLayout(线性布局,水平或垂直排列)、RelativeLayout(相对布局,...

    Layout-to-Image,android布局(相对布局、线性布局等)到图像.zip

    《Android布局转换:将XML布局转化为图像》 在Android应用开发中,布局设计是至关重要的一步,它决定了用户界面的视觉效果和交互性。本文将深入探讨如何将XML布局文件转化为图像,以此来预览和优化UI设计。我们将以...

    Android XML attribute

    在Android开发中,XML文件扮演着非常重要的角色,特别是在定义界面布局、样式、动画等方面。为了帮助开发者更好地理解Android中的各种XML属性及其用途,本文将详细介绍部分核心XML元素及其属性,包括但不限于`...

    Android布局管理器

    在XML布局文件中,每个视图和布局都有其特定的属性,例如Button的`android:text`用于设置按钮文字,`android:id`用于标识视图以便于在代码中引用。同时,我们还可以通过代码动态修改这些属性,增加了布局的灵活性。 ...

    android四种布局的简单用法

    在实际项目中,通常会结合使用多种布局来达到最佳效果,同时注意性能优化,避免过度绘制和深层级的嵌套布局,以提升应用的运行效率。通过不断实践和学习,开发者可以掌握更多关于Android布局的技巧和最佳实践。在`...

    Android 简单的实现一个流式布局

    下面是一段简单的示例代码,展示了如何在XML布局文件中使用自定义的FlowLayout: ```xml android:id="@+id/flow_layout" android:layout_width="match_parent" android:layout_height="wrap_content" app:...

    android RPG地图绘制

    1. **初始化SurfaceView**:创建SurfaceView实例,并在布局文件中添加。设置SurfaceHolder的回调,以便在Surface准备就绪时开始绘制。 2. **解析Tiled地图**:加载TMX文件,解析图块集、图层和对象组的数据。这通常...

    android高亮布局引导Hlight

    2. **定位高亮区域**:确定每个引导页中需要高亮的UI元素,可以通过XML布局文件中的ID来标识这些元素。 3. **创建高亮效果**:使用自定义视图或现有的库(如`Highlighter`、`MaterialShowcaseView`等)来创建高亮...

    android 绘制电池监测电量(Canvas实现)

    4. **布局和样式**:在XML布局文件中,将`BatteryView`加入到视图层次结构中,设置合适的宽高。 ```xml android:id="@+id/battery_view" android:layout_width="wrap_content" android:layout_height="wrap_...

    Android_ui.zip_android_android 界面_android ui_android 界面_android

    此外,Android支持XML布局文件,这允许开发者在不编写Java代码的情况下设计界面。XML布局文件提供了可视化编辑器,可以在Android Studio中预览界面效果。同时,Android还提供了动态加载布局的能力,使程序可以根据...

    Android 动画顺序播放源码.zip

    - XML布局文件:包含了动画定义,可能既有补间动画也有帧动画。 4. 使用步骤: 1) 加载动画资源:使用`AnimationUtils.loadAnimation()`加载XML定义的动画。 2) 设置动画监听器:如果需要在动画之间进行切换,...

    Android开发模仿京东app的布局Demo源代码

    资源管理也是Android开发中的重要一环,XML资源文件用于定义界面元素和字符串,以及颜色、尺寸等资源。项目可能包含了res目录下的layout、values、drawable等文件夹,这些文件夹分别存放布局文件、字符串、颜色和...

    Android SurfaceView添加组件view不被组件覆盖.rar

    因此,你可以尝试调整View在XML布局文件中的顺序,确保需要显示在SurfaceView上面的组件位于SurfaceView之后。 3. **使用帧布局FrameLayout**:FrameLayout允许子视图重叠,你可以将SurfaceView和其他组件都放入一...

    Android布局大全(包含常见属性)

    - 在设计界面之前最好先绘制草图并计算好各个元素的精确坐标,避免在布局过程中出现错误。 - 要考虑到不同屏幕尺寸下的适配问题,确保界面在多种设备上都能正常显示。 **示例代码解析:** ```xml ...

    Android实现Z轴布局效果

    同时,我们在XML中声明一个自定义属性`layout_zorder`,让用户在XML布局文件中可以设置每个View的Z轴层级。 ```java public static class LayoutParams extends FrameLayout.LayoutParams { public final static ...

    Adroid+UI+界面绘制原理分析.rar

    Android通过LayoutInflater解析XML布局文件,并生成View对象树。 View是Android UI的基本构建块,每个View都负责自己的绘制。在View的绘制过程中,有两个重要的方法:onDraw()和onMeasure()。onMeasure()用于测量...

    android开发基础视频链接

    此外,XML是定义布局的主要方式,学习者需要掌握如何编写和调试XML布局文件。 AndroidManifest.xml文件是另一个重要的组成部分,它包含了应用的所有元数据,包括应用的组件、权限和其他配置。视频会指导学习者如何...

    Eight_Android五环_android_

    总的来说,"Eight_Android五环_android_"项目涵盖了Android图形绘制、动画实现、用户交互和响应式布局等多个关键知识点,对于提升Android开发者的设计和编程能力具有很大的实践价值。通过这个项目,你可以深入了解...

    Android-流式布局,可配置是否将每一行的空白区域平均分配给子控件

    接下来,你可以在XML布局文件中声明BGAFlowLayout,设置相应的属性。例如,你可以通过`android:configChanges`属性来控制是否平均分配空白: ```xml android:id="@+id/flow_layout" android:layout_width="match...

Global site tag (gtag.js) - Google Analytics