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);
这样就可以了。

转载于:https://www.cnblogs.com/SZ2015/p/4548044.html

android中include标签使用详解相关推荐

  1. Android中的四大组件详解

    Android中的四大组件详解 我们都知道Android系统应用层框架中,为开发者提供了四大组件来便于应用的开发,它们是Activity.Service.BroadcastReceiver.Conte ...

  2. android studio parcelable,Android中Parcelable的使用详解

    Parcelable与Serializable Serializable是Java为我们提供的一个标准化的序列化接口. Parcelable是Android为我们提供的序列化的接口. 对比: 1.Pa ...

  3. JSP中meta标签之详解

    JSP中meta标签之详解 2013年01月26日 16:09:27 阅读数:5589 JSP标签 <meta.....>作用总结 <metahttp-equiv="pra ...

  4. RxJava操作符在android中的使用场景详解(一)

    转载请注明出处:http://www.wangxinarhat.com/2016/04/19/2016-04-19-rxjava-android-operate1/ 最近学习了RxJava在andro ...

  5. android中include标签的使用

    在一个项目中我们可能会需要用到相同的布局设计,如果都写在一个xml文件中,代码显得很冗余,并且可读性也很差,所以我们可以把相同布局的代码单独写成一个模块,然后用到的时候可以通过<include ...

  6. Android中图片压缩方案详解

    如感觉排版不舒服,可移步至此处查看 图片的展示可以说在我们任何一个应用中都避免不了,可是大量的图片就会出现很多的问题,比如加载大图片或者多图时的OOM问题,可以移步到Android高效加载大图.多图避 ...

  7. Android中LayoutParams类精炼详解

    一.前期基础知识储备 首先看几个使用LayoutParams的实例: 1.<Android开发艺术探索>第8章,Java代码中动态设置按钮时 通过LayoutParams参数设置按钮位置x ...

  8. Android中R.java文件详解

    R.java文件有两种,两种文件作用一样都是获取资源的引用,区别在于一个存放着我们写的项目中资源的引用,另一个存放着系统定义好的一些资源 1.1 项目的R.java文件 先说第一种是项目编译出来的R. ...

  9. android中样式文件步骤,详解Android主题开发的样式教程

    Android中的样式和css样式作用相似,都是用于为界面元素定义显示风格,它是一个包含一个或者多个view 控件属性的集合.主题是一个包含一种或者多种格式化属性的集合,你可以将其为一个单位用在应用中 ...

  10. Android中AIDL的使用详解

    Git: https://github.com/whtchl/AidlTemplate AIDL用来做什么 AIDL是Android中IPC(Inter-Process Communication)方 ...

最新文章

  1. 五一到底去哪玩?哪个景点人少又好玩?手把手教你玩Python爬虫
  2. JAVA秒杀mysql层实现_Java商城高并发秒杀系统架构分析设计与开发实战
  3. UITableViewCell中cell重用机制导致内容重复的方法
  4. java数据类型及其说明
  5. linux 基础训练题,Linux习题练习
  6. url_regex和urlpath _regex区别
  7. docker 清理容器的一些命令,彻底或选择清理
  8. WIN和LIN环境下对拍程序
  9. Exynos4412——LCD驱动
  10. tcpclient java_以TcpClient接收消息
  11. Java面试笔试题大汇总一(最全+详细答案)
  12. java amr转mp3_在java中使用ffmpeg将amr格式的语音转为mp3格式
  13. 英语 名词复数的变化及其发音
  14. Python数据分析实战(1)数据分析概述
  15. QQ音乐、网易云音乐、酷狗音乐歌单导入到Spotify
  16. 听Nicholas讲课的一些感想
  17. 电脑文件误删除怎么恢复?
  18. 分离非负整数--gyy
  19. SURF C++代码 详细阅读(二)—— 极值点检测 确定极值点精确位置
  20. 苹果手机微信声音小怎么调大声_【泽云广场|好声音KTV】19.9元畅享门市价198元下午场欢唱+茶水!79.9元尊享全天场欢唱+酒水小吃附带纸巾!越夜越时尚!...

热门文章

  1. 图论/暴力 Codeforces Beta Round #94 (Div. 2 Only) B. Students and Shoelaces
  2. Request 获取网址各片段
  3. 自动垃圾回收学习笔记-我们为什么需要自动垃圾回收
  4. CodeSmith 基础教程
  5. 从 JVM 层面理解 i++ 和 ++i 的真正区别!
  6. 京东双十一大促网关承载十亿调用量背后的架构实践
  7. Unix 目录结构是怎么由来的?
  8. 我怕三十的红包太多,先发为敬!
  9. mysql update 几万 非常慢_MySQL慢日志这样分析才够味
  10. Python实现批量处理扫描特定目录