Android使用现有的视图对象膨胀视图
我有一个自定义视图,我想从资源模板创建。 我的自定义视图构造函数接受额外的参数,这些参数被设置为自定义视图的附加信息。
问题是当我膨胀的视图,我得到一个视图对象不是从自定义视图的子类,因为膨胀方法是静态的,并返回一个通用的新视图,而不是我的自定义视图的实例。
我期待的是通过传递我的自定义视图对象引用来扩大视图的方法。
public class MLBalloonOverlayView extends View { MiscInfo mMiscInfo; public MLBalloonOverlayView(Context context, MiscInfo miscInfo) { super(context); mMiscInfo = miscInfo; } public View create(final int resource, final OverlayItem item, MapView mapView, final int markerID) { ViewGroup viewGroup = null; View balloon = View.inflate(getContext(), resource, viewGroup); // I want to return this object so later I can use its mMiscInfo //return this; return balloon; } }
将它膨胀在你的物体上。
public View create(final int resource, final OverlayItem item,
MapView mapView, final int markerID) {
LayoutInflater.from(getContext()).inflate(resource, this, true);
return this;
}
在https://github.com/galex/android-mapviewballoons查看代码后,我能够相应地更新我的代码。 这个想法是你从资源创建一个布局,然后你将这个膨胀的视图添加到扩展布局的类的实例中(如上面的Marcos所建议的那样)。
public class MLBalloonOverlayView extends FrameLayout {
public MLBalloonOverlayView(Context context, final OverlayItem overlayItem) {
super(context);
mOverlayItem = overlayItem;
}
public void create(final int resource, MapView mapView, final int markerID) {
// inflate resource into this object
TableLayout layout = new TableLayout(getContext());
LayoutInflater.from(getContext()).inflate(resource, layout);
TableLayout.LayoutParams params = new TableLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.NO_GRAVITY;
this.addView(layout, params);
}
}
链接地址: http://www.djcxy.com/p/68007.html