wake-up-neo.com

Wie kann ich das enthaltene XML-Layout in ein anderes Layout in Java-Code ändern?

ich habe ein Problem. Ich entwickle Android-Anwendung.

Ich habe das zweite Layout in das erste Layout eingefügt:

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

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="300dp"
    Android:layout_height="match_parent"
    Android:layout_gravity="clip_horizontal"
    Android:layout_alignParentLeft="true" 
    Android:id="@+id/rlMenu"
    >

    <Button
        Android:id="@+id/bMusteriler"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:text="Musteriler"
        Android:textSize="45dp"
        Android:layout_alignParentLeft="true"
         />

</RelativeLayout>

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="match_parent"
    Android:layout_toRightOf="@id/rlEkranlar"
     >

    <include
        Android:id="@+id/include1"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        layout="@layout/ikinci" />

</RelativeLayout>
</RelativeLayout>

Problem ist, wie kann ich das enthaltene Layout ändern, wenn ich auf eine Schaltfläche klicke (auf Java-Code)?

Entschuldigung für mein Englisch. Vielen Dank.

21
UurYsr

Ich empfehle ViewFlipper in RelativeLayout Ihrer include-Anweisungen. Versuchen Sie es so:

<ViewFlipper xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/vf"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content" >

    <include Android:id="@+id/include1" layout="@layout/ikinci" />
    <include Android:id="@+id/map" layout="@layout/third_layout" />

</ViewFlipper>

Greifen Sie wie folgt auf den ViewFlipper zu. Zunächst wird das erste Layout ausgegeben:

ViewFlipper vf = (ViewFlipper)findViewById(R.id.vf);

Für Button onClickListener:

button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                vf.setDisplayedChild(1);
            }
        });
52
Yugandhar Babu

Es gibt zwei Möglichkeiten, Layouts im Code zu ändern:

A. Sichtbarkeit ändern. Fügen Sie zwei verschiedene Layouts in Ihre XML ein: 

<include 
    Android:id="@+id/id1"
    Android:visibility="visible"/>
<include 
    Android:id="@+id/id2"
    Android:visibility="gone"/>

und im Code verwenden Sie dies:

findViewById(R.id.id1).setVisibility(View.GONE);
findViewById(R.id.id2).setVisibility(View.VISIBLE);

B. Kinder manuell hinzufügen. Verwenden Sie dasselbe XML, das Sie jetzt verwenden, und fügen Sie Code hinzu, den Sie untergeordnete Elemente hinzufügen oder löschen können:

yourRelativeLayout.removeAllViews();
yourRelativeLayout.addView(viewToInclude);

Offtopic:

Sie müssen nicht xmlns:Android param in RelativeLayout schreiben. Nur für das oberste Tag in der Layoutdatei. 

20
Jin35

Haben Sie versucht, die Instanz der aktuellen Ansicht der XML-Datei abzurufen, die Sie in die andere XML eingefügt haben, und verwenden Sie findViewById(). Ansicht v ist das erste Layout und für diese Ansicht verwenden Sie .findViewById()

0