Android开发中使用inflate方法,必不可少,无论是在自定义adapter中,还是在代码中使用自定义View时。该方法有四个重载方法,本文着重讨论使用public View inflate(int resource, ViewGroup root)
方法时,对生成的View宽高进行处理,因为此方法使用参数限制较少,应用最为广泛。public View inflate(int resource, ViewGroup root)
该方法生成View让人最为头疼的地方在于,他使资源文件resource最外层的控件的layout_xxx属性失效,具体原因,请参考:http://www.2cto.com/kf/201407/313054.html。因此,针对于该问题最简单也最实用的解决方案就是在你自己的资源文件最外层再添加一个Linearlayout或者RelativeLayout,使用如下图所示:
setLayoutParams(layoutParams);
方法,可以将宽高值手动设置给自己定义资源的最外层控件,那么额外的外层控件就能测量自己定义资源的最外层控件的宽高了。具体请看图:
1. 布局文件:
可以看到该布局文件与上面布局文件的不同之处在与自定义资源的最外层控件需要使用match_parent属性值。
2.代码处理:
主要思路就是,获取到屏幕宽高,主动把宽高值赋给我们自定义资源的最外层控件(318行,find到自定义资源的最外层控件;319~321行,给自定义资源的最外层控件赋值),然后我们添加的额外布局控件就能正确测量自定义资源的最外层控件的大小了。
本文所有内容就只有这么多了,如果大家有更好对这个问题的解决办法,欢迎拍砖~
设置成相对布局 然后在布局中弄一个1dp的view
然后再设置
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:id="@+id/rl_cs_neon"
android:background="@drawable/call_show_neon"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/call_show_common" />
<View
android:id="@+id/view_setmathparent"
android:layout_width="1dp"
android:layout_height="1dp"/>
</RelativeLayout>
View llparmat = (View) view.findViewById(R.id.view_setmathparent);
llNeno.setBackgroundColor(Color.BLUE);
ViewGroup.LayoutParams layoutParams = llparmat.getLayoutParams();
layoutParams.width= ScreenH_W.geteightWidth();
layoutParams.height= ScreenH_W.getHeight();
llparmat.setLayoutParams(layoutParams);