mardi 26 mai 2015

android: Custom view not showing

I'm having trouble creating a custom view.

If my understanding is correct, i wish for a compound view where ui elements like Switch can be incorporated within a custom view. An example of intention of this will be a modal view that displays a series of switches with a save & back button with relative actions, in context to an in-app form purpose.

In other examples/questions people have mentioned this.addView(View childView) however when i try to use this function i get an unresolved symbol error from android studio. When executed, the app displays blank.

public class NewView extends View {
private Switch switchOne;
private Switch switchTwo;

public NewView(Context context){
    super(context);
    init(null, 0);
}

public NewView(Context context, AttributeSet attrs){
    super(context);
    init(attrs, 0);
}

public NewView(Context context, AttributeSet attrs, int defStyle){
    super(context);
    init(attrs, defStyle);
}

private void init(AttributeSet attrs, int defStyle) {

    //LayoutInflater.from(getContext()).inflate(R.layout.customview, (ViewGroup) this.getParent(), true); //First attempted this approach
    ((Activity) getContext()).getLayoutInflater().inflate(R.layout.customview, (ViewGroup) this.getParent()); //then attempted this approach

    this.switchOne = (Switch) findViewById(R.id.firstSwitch);
    this.switchTwo = (Switch) findViewById(R.id.secondSwitch);
}

@Override
public void onDraw(Canvas canvas){
    super.onDraw(canvas);
}

}

customview.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://ift.tt/nIICcg"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/mainView">

    <Switch
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/firstSwitch"/>
    <Switch
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/secondSwitch"/>

</LinearLayout>

activity_main.xml

<LinearLayout xmlns:android="http://ift.tt/nIICcg"
    xmlns:tools="http://ift.tt/LrGmb4" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <com.example.simonaddicott.customviewone.NewView
        android:layout_height="match_parent"
        android:layout_width="match_parent"

        android:id="@+id/myNewView"
        />

</LinearLayout>

Aucun commentaire:

Enregistrer un commentaire