2016-05-26 11 views
0

Ich habe ein benutzerdefiniertes Kreislayout mit Rotationsfunktion und 4 Ansichten als Schaltflächen. Auf main_activity ich habe 2 Layouts: -Kreis Layout -relative Layout (Container)Ändern des Layouts beim Klicken auf die Schaltfläche

Was ich will, ist: -Wenn der Benutzer auf eine Schaltfläche aus Kreis Layout klopft, ich will der Behälter mit einem anderen geändert werden Layout mit anderen Ansichten.

Dies ist die Initialisierung des Behälters:

displayLayout = (RelativeLayout) findViewById(R.id.fragment_container); 

Initialisierung der Kreis-Layout:

circleLayout = (CircleLayout) findViewById(R.id.circle_layout); 

Die Antippereignis auf dieser Methode auftritt:

public void onItemClick(View view) { 

    displayLayout.removeAllViews(); 
    -- What should i do here? -- 
} 

Ich möchte, dass die neue xml (newpage.xml), die im Container ersetzt werden soll.

Irgendwelche Vorkehrungen zu treffen? Vielen Dank!

+0

Verwenden Sie Fragment-Konzept als Rahmenlayout & ersetzen Inhalt mit Fragment-Manager – Moorthy

+0

Sie sollten Fragmente verwenden. Sonst ist eine kürzere Option, die Sichtbarkeit mehrerer Layouts zu wechseln, mit GONE/VISIBLE basierend auf den Bedingungen (aber das wird auf lange Sicht ein Problem sein) – PRYM

+0

Jedes einfache und gute Tutorial, das zu meinem Beispiel passt? – TrulyXax

Antwort

2

Sie es mit Fragmente tun müssen, um wie in unten gezeigt, Ansicht

Check-Fragmente in android (https://developer.android.com/reference/android/app/Fragment.html)

ersetzen
public void onItemClick(View view) { 
     //displayLayout.removeAllViews(); 
     // Create new fragment and transaction 
     Fragment newFragment = new ExampleFragment(); 
     FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
     // Replace whatever is in the fragment_container view with this fragment, 
     // and add the transaction to the back stack if needed 
     transaction.replace(R.id.fragment_container, newFragment); 
     transaction.addToBackStack(null); 
     // Commit the transaction 
     transaction.commit(); 
    } 

überprüfen Sie http://sapandiwakar.in/replacing-fragments/

Beispiel überprüfen http://notionink.wikidot.com/rajeshbabu

+0

Entfernen des Circlelayout ist nicht das eigentliche Problem. Ich möchte, dass das Circlelayout über den anderen Layouts liegt. Was ich eigentlich will, ist das Ändern des Container-Layouts mit einem weiteren Klick auf die Schaltfläche. – TrulyXax

+0

Möchten Sie zur Laufzeit wechseln? –

+0

Auf Itemclick-Methode. Beim ersten Laden hat displayLayout 3 Textviews, beim Button click möchte ich displayLayout2 mit n verschiedenen Ansichten anzeigen. – TrulyXax

1

ersetzen hier Code,

public void onItemClick(View view) { 

    // displayLayout.removeAllViews(); 
    circleLayout.setVisibility(View.Gone); 

} 
Verwandte Themen