4

我有一个想从资源模板创建的自定义视图。我的自定义视图构造函数接受设置为自定义视图附加信息的附加参数。

问题是当我膨胀视图时,我得到一个视图对象,它不是从自定义视图子类化的,因为 inflate 方法是静态的,并且返回一个通用的新视图而不是我的自定义视图的实例。

我是否正在寻找一种通过将我的自定义视图对象引用传递给视图来膨胀视图的方法。

公共类 MLballoonOverlayView 扩展视图 {
    杂项信息
    公共MLBalloonOverlayView(上下文上下文,MiscInfo miscInfo){
        超级(上下文);
        mMiscInfo = 杂项信息;
    }
    public View create(final int resource, final OverlayItem item,
                        MapView mapView, final int markerID) {
        视图组视图组=空;
        查看气球 = View.inflate(getContext(), resource, viewGroup);

      // 我想返回这个对象,以便稍后我可以使用它的 mMiscInfo
      //返回这个;
        返回气球;
    }
}
4

2 回答 2

2

在查看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);
    }
}
于 2011-04-27T20:09:57.283 回答
1

在你的物体上充气。

public View create(final int resource, final OverlayItem item, 
                    MapView mapView, final int markerID) {
  LayoutInflater.from(getContext()).inflate(resource, this, true);
  return this;
}
于 2011-04-26T21:36:59.020 回答