Custom View not inflating

android, custom-component, custom-controls

Solution

You will see nothing because `MyCustomView` doesn't have any content as you wrote it. First of all I would use one of the `ViewGroups` children instead of `View`(like `LinearLayout`, `RelativeLayout` etc):

public class MyCustomView extends LinearLayout {

    TextView textAdvertise;
    ImageView imageAdvertise;
    View view;
    ViewSwitcher switcher ;

    public MyCustomView(Context context, AttributeSet attrs) {
        super(context);
    }

    public MyCustomView(Context context, AttributeSet attrs) {
        super(context, attrs);
        LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        if (layoutInflater != null) {
            view = layoutInflater.inflate(R.layout.main, this, true);
        }
        initialize();
    }

     public MyCustomView(Context context, AttributeSet attrs, int theme) {
         super(context, attrs, theme);
     }
// ...

Problem

I am trying to create my custom view through xml, but the screen does not show my view, s it is not inflating. My custom view xml is as: ``` <?xml version="1.0" encoding="utf-8"?> <ViewSwitcher xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/profileSwitcher" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#FFFFFF" > <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <ImageView android:id="@+id/imgAdvertise" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@android:drawable/btn_minus" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" > <TextView android:id="@+id/txtAdvertise" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="asdas" /> </LinearLayout> </ViewSwitcher> ``` I have my custom `View` class as: ``` public class MyCustomView extends View{ TextView textAdvertise; ImageView imageAdvertise; View view; ViewSwitcher switcher ; public MyCustomView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); if (layoutInflater != null) { view = layoutInflater.inflate(R.layout.main, null); } initialize(); } public void initialize() { // TODO Auto-generated method stub textAdvertise = (TextView) view.findViewById(R.id.txtAdvertise); imageAdvertise = (ImageView) view.findViewById(R.id.imgAdvertise); switcher = (ViewSwitcher) view.findViewById(R.id.profileSwitcher); startAnimation(); } public void startAnimation() { // TODO Auto-generated method stub new Thread() { public void run() { for (;;) { try { Thread.sleep(2000); hRefresh.sendEmptyMessage(5); } catch (Exception e) { } } } }.start(); } Handler hRefresh = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case 5: switcher.showNext(); // To go back to the first view, use switcher.showPrevious() break; default: break; } } }; } ``` and in my base xml layout where I have to show the `View`, is one button and and my `View` as: ``` <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="fill_parent" android:layout_height="0dp" android:text="Button" android:layout_weight="1"/> <com.example.viewswitcher.MyCustomView android:id="@+id/MyView" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" /> ``` Can anyone please tell me what it is going wrong?

Original source