`
- 浏览:
19197 次
- 性别:
- 来自:
深圳
-
android中include标签是为了便于控件的覆用的一个很好解决方案。
但是也有一些需要注意的地方,下面是本人在项目中碰到过的一个问题,做此记录,便于以后查看。
include标签用法。
1.新建一个xml文件,命名 head.xml
head.xml文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/index_linear_foot"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<ImageView
android:id="@+id/head_btn_refresh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</RelativeLayout>
2.新建一个布局文件,命名 main.xml
main.xml文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<include android:layout_width="fill_parent" android:layout_height="wrap_content" layout="@layout/head" />
</LinearLayout>
注意:上面我们的include标签中是没有为它指定id的。
3.新建一个MainActivity,设置布局文件为main.xml;
4.假设我现在需要在代码中为head.xml中的RelativeLayout容器设置背景图片。
代码如下:
//获得布局容器对象
RelativeLayout head = (RelativeLayout)findViewById(R.id.index_linear_foot);
//设置背景图片
head.setBackgroundResource(R.drawable.head);
这样就OK了。
5.刚刚说到,我们的include标签中是没有为它指定id的,假设我们现在的main.xml文件布局容器是RelativeLayout,而我需要把某个控件放在head.xml下面。就需要使用到RelativeLayout布局容器的特有属性 android:layout_below="" 属性。还需要为include指定id属性。
那我们的main.xml文件变成如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<include android:id="@+id/main_head" android:layout_width="fill_parent" android:layout_height="wrap_content" layout="@layout/head" />
<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/main_headb"
/>
</RelativeLayout>
那接下来我们在运行我们的实例,结果发现,代码在运行到head.setBackgroundResource(R.drawable.head);
这一句的时候抛异常了
java.lang.NullPointerException
原来:如果include指定了id的话,就不能直接把它里面的控件当成主xml中的控件来直接获得了,必须先获得这个xml布局文件,再通过布局文件findViewById来获得其子控件。
代码如下
View layout = getLayoutInflater().inflate(R.layout.head, null);
RelativeLayout head= (RelativeLayout)layout.findViewById(R.id.index_linear_foot);
//设置背景图片
head.setBackgroundResource(R.drawable.head);
这样就可以了。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
`include`和`merge`标签是两个非常重要的布局重用工具,它们极大地提高了代码的可维护性和性能。下面将详细阐述这两个标签的功能、用法以及如何结合使用。 首先,`include`标签的作用是允许你在多个布局文件中复用...
`<include />`标签是在Android 1.6版本(API Level 4)中引入的,目的是为了提高布局设计的效率,减少代码冗余。通过将公共的布局元素提取成单独的XML文件,然后在需要的地方用`<include />`引用,可以显著提高代码...
你还可以在`<include/>`标签内覆盖布局参数,比如调整宽度和高度,但这需要同时指定`android:layout_width`和`android:layout_height`: ```xml <include android:id="@+id/news_title" android:layout_width=...
在Android开发中,`<include/>`标签是一个非常实用的功能,它允许开发者将常见的布局设计抽象出来,作为独立的XML文件,然后在多个地方重复使用,以提高代码的复用性和可维护性。本篇文章将深入解析Android中的`...
`include`和`merge`标签是Android XML布局文件中两个非常重要的元素,它们帮助开发者实现布局的重用和优化,提高代码的可维护性和效率。本篇文章将深入探讨这两个标签的使用方法以及它们在Android开发中的作用。 ##...
`include`和`merge`标签是Android XML布局文件中两个非常重要的元素,它们帮助开发者实现布局的重用和优化,提高代码的可维护性和效率。接下来,我们将深入探讨这两个标记的区别和使用方法。 ### `include`标签 `...
在Android开发中,`merge`标签是一个非常实用的布局优化工具,它可以帮助开发者减少XML布局文件中的层级,提高应用的性能。本篇文章将详细介绍`merge`标签的使用方法及其优势。 `merge`标签最初被引入是为了减少...
在这个“Include标签学习的demo”中,你将看到如何将这些概念实际应用到Android UI抽样布局中,通过案例来理解它们的工作原理和效果。这个demo可能包含了多个示例页面,展示了`<include>`标签在不同场景下的用法,...
`include`标签是Android布局复用的重要工具,它允许开发者将一个布局文件嵌入到另一个布局文件中,从而减少代码重复,提高开发效率,并有助于维护。本篇文章将深入探讨`include`标签的使用方法及其注意事项。 ### 1...
由于Android系统对硬件的要求较高,并且上层应用都是用Java(效率要比C++低)编写的,对程序的优化就成了程序员的日常工作了;Android的优化 可以从以下几个地方下手:布局优化、数据库优化、使用异步加载数据、使用...
在Android开发中,`<include>`标签是一种布局重用机制,它允许开发者将一个布局文件嵌入到另一个布局文件中,极大地提高了代码的可维护性和复用性。本篇文章将详细探讨`<include>`标签的使用方法、应用场景以及注意...
在Android开发中,`merge`和`include`是两种非常重要的布局管理工具,它们能够帮助开发者更有效地管理和优化布局文件,提高代码的可维护性和性能。这篇博客将深入讲解这两个概念,以及它们如何在实际项目中应用。 ...
"merge"标签是Android XML布局文件中的一个特殊元素,主要用于减少视图层次,提高布局加载效率,从而提升UI性能。本文将深入探讨merge标签的原理、使用场景以及注意事项。 ### 1. merge标签简介 merge标签源自`...
在Android开发中,`<include>`和`<merge>`标签是两种非常重要的布局组合工具,它们可以帮助开发者提高代码复用性,减少布局嵌套,从而优化应用性能和UI设计。让我们深入探讨这两种标签的使用方法及其优化布局的作用...
在Android开发中,`<include>`标签是一个非常实用的功能,它允许开发者将一个XML布局文件嵌入到另一个XML布局文件中,从而实现布局的复用,提高代码的可维护性和效率。这个特性体现了编程中的“Don't Repeat ...
为了使布局更加清晰、可维护,Android提供了一种称为`include`的标签,允许开发者将多个布局文件组合在一起,形成复杂的用户界面。本文将深入探讨`include`控件的用法,并通过实例演示如何使用这一功能。 `include`...
在Android开发中,`<include>`标签是一种非常实用的功能,它允许我们重用布局文件,提高代码的可维护性和减少冗余。通过`<include>`,我们可以将一个或多个组件组合到一个单独的布局文件中,然后在其他布局中进行...