有两个设计好的layout(xml文件)A和B,现要求将B作为A的子视图放在A的某处,这个功能通过addview来实现。下面我来介绍一下关于添加子视图的方法。
1.构造两个xml文件
2.LayoutInflater
提到addview,首先要了解一下LayoutInflater类。这个类最主要的功能就是实现将xml表述的layout转化为View的功能。为了便于理解,我们可以将它与findViewById()作一比较,二者都是实例化某一对象,不同的是findViewById()是找xml布局文件下的具体widget控件实例化,而LayoutInflater找res/layout/下的xml布局文件来实例化的。
(1)创建
LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);或
LayoutInflater inflater = LayoutInflater.from(Activity.this);或
LayoutInflater inflater = getLayoutInflater();
这三种方法本质是相同的。
(2)inflate()
用LayoutInflater.inflate() 将LayOut文件转化成VIew。
View view = inflater.inflate(R.layout.login, null);
3.添加子视图
MapView mv = (MapView)findViewById(R.id.map);
mv.addView(popView,
new MapView.LayoutParams(MapView.LayoutParams.WRAP_CONTENT,
MapView.LayoutParams.WRAP_CONTENT, geopoint,80,150,
MapView.LayoutParams.BOTTOM_CENTER));
这里解释一下第二个参数,ViewGroup.LayoutParams类。它里面的参数分别设置了宽,高,添加位置(GeoPoint),X轴偏移,Y轴偏移,对齐方向。
4.效果展示
在地图背景上添加一张小图片