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

上一篇: Android inflate view using an existing view object

下一篇: findViewByID returns null