Android开发中使用inflate方法,必不可少,无论是在自定义adapter中,还是在代码中使用自定义View时。该方法有四个重载方法,本文着重讨论使用public View inflate(int resource, ViewGroup root)方法时,对生成的View宽高进行处理,因为此方法使用参数限制较少,应用最为广泛。public View inflate(int resource, ViewGroup root)该方法生成View让人最为头疼的地方在于,他使资源文件resource最外层的控件的layout_xxx属性失效,具体原因,因此,针对于该问题最简单也最实用的解决方案就是在你自己的资源文件最外层再添加一个Linearlayout或者RelativeLayout,具体请参考博客:。使用如下图所示: 

android 屏幕宽度放到xml中 android view设置宽高_android 屏幕宽度放到xml中

setLayoutParams(layoutParams);方法,可以将宽高值手动设置给自己定义资源的最外层控件,那么额外的外层控件就能测量自己定义资源的最外层控件的宽高了。具体请看图: 

1. 布局文件: 

android 屏幕宽度放到xml中 android view设置宽高_android 屏幕宽度放到xml中_02

可以看到该布局文件与上面布局文件的不同之处在与自定义资源的最外层控件需要使用match_parent属性值。

2.代码处理: 

android 屏幕宽度放到xml中 android view设置宽高_自定义_03

主要思路就是,获取到屏幕宽高,主动把宽高值赋给我们自定义资源的最外层控件(318行,find到自定义资源的最外层控件;319~321行,给自定义资源的最外层控件赋值),然后我们添加的额外布局控件就能正确测量自定义资源的最外层控件的大小了。