jramirez
jramirez

Reputation: 484

Set a view determined previously in the XML file

I've a View declared in the XML file, and I want to define it by code, but when I establish it nothing is shown. Can you help me?

This is my XML file:

[...]

<View
        android:id="@+id/marco_container"
        style="@style/wrapFull"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" /> 

[...]

And I define it by this way:

setContentView(R.layout.marco);
View view = (View) findViewById(R.id.marco_container);
view.inflate(getApplicationContext(), R.layout.prueba, null);

I tried to declare it by this way too:

view = View.inflate(getApplicationContext(), R.layout.prueba, null);

This is prueba.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView android:text="Prueba" style="@style/wrapContent" 
    android:layout_gravity="center"/>


</FrameLayout>

Upvotes: 0

Views: 162

Answers (3)

Tsunaze
Tsunaze

Reputation: 3254

It's not a View view. It's your custom View, just create a custom view that extends FrameLayout and inside the constructor inflate your view.

LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER...);
View view = inflater.inflate(getApplicationContext(), R.layout.prueba, this);

and inside your main xml put :

<com.my.path.CustomView
    android:id="@+id/marco_container"
    style="@style/wrapFull"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" /> 

And in your class :

setContentView(R.layout.marco);
CustomView view = (CustomView) findViewById(R.id.marco_container);

Upvotes: 1

Gridtestmail
Gridtestmail

Reputation: 1479

setContentView(R.layout.marco);
LinearLayout li = (LinearLayout) findViewById(R.id.marco_container);
View view = getLayoutInflater().inflate(R.layout.prueba, li, false);
li.addView(view);

Upvotes: 0

Givi
Givi

Reputation: 3283

You need to do it this way:

View view2 = view.inflate(this, R.layout.prueba, null);
((ViewGroup)view).addView(view2);

Of course view must be some kind of ViewGroup (RelativeLayout, LinearLayout, etc.)

Upvotes: 0

Related Questions