tags:

views:

301

answers:

1

Hi,

I'm trying to make some Android view classes (which are just wrappers around layouts defined in an XML file). Is this correct:

public class MyViewWrapper extends LinearLayout {
    private TextView mTextView;

    public MyViewWrapper(Context context) {
        super(context);
    }

    public constructUI() {
        LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        inflater.inflate(R.layout.myview, this);

        mTextView = (TextView)findViewById(R.id.myview_textview);
    }
}

so the idea is just that I can construct my views like that, and they have logic inside for modifying their child views etc. The layout looks like:

<LinearLayout>
   <TextView />
</LinearLayout>

It just looks like I'm going to get an extra unnecessary LinearLayout. The wrapper class is itself a LinearLayout, and then it will attach the inner LinearLayout from the xml file.

Is that ok?

Thanks

A: 

You can try replacing the <LinearLayout> in your layout file with <merge>. I have not tried that recently, and I think I ran into problems when I last tried it, but in theory it should serve the purpose. <merge> basically means "take all my children and put them directly into whatever container I'm being inflated into".

CommonsWare