2010-12-22 4 views
0

Hey alle, Ich habe ein Programm in Java erstellt, das Jpanels in Jpanels verwendet. Ein Beispiel hierfür ist eine Seitenansicht mit Schaltflächen, die die Hauptansicht beim Drücken ändern. Die Hauptansicht enthält auch Schaltflächen, mit denen Sie sich selbst ändern können.Android-Layouts innerhalb von Layouts, wobei separate Klassen ihre Eingaben verarbeiten?

Ich versuche, dies auf dem Android neu zu erstellen. Ich habe mein Layout von einem XML eingerichtet, mit einem Seitenbereich mit Schaltflächen und der Hauptansicht.

Es gibt eine andere XML, die enthält, was ich in der Hauptansicht möchte.

Jetzt habe ich Schwierigkeiten, dieses separate XML in der Hauptansicht angezeigt zu bekommen und kann nicht herausfinden, wie ich die Klasse dazu bringen würde, ihre eigenen Eingaben zu verarbeiten. Ich möchte den Code nicht in die main.xml einfügen, da ich die Dinge objektorientiert halten möchte und jede Ansicht einige benutzerdefinierte Elemente benötigt, z. B. verschiedene Textansichten.

Ein Beispiel dafür, was ich versuche, für die Android zu konvertieren ist unter: -

//The ViewInt class has its own layout 
ViewInt tempView = new ViewInt(i, mFloorNo); 
//The viewInt class is then added to the main window. 
mainWindowPanel.add(tempView); 

Dieses kleine Stück Code eine Ansicht erstellen würde, fügen Sie ihn in der Hauptansicht und dann jeder Eingabe im Haupt Fenster wird von dieser Klasse behandelt, aber gleichzeitig wird jede Eingabe, die nicht in diesem Hauptfenster ist, von einer anderen Klasse (wahrscheinlich der Root-Klasse) gehandhabt. Jede Hilfe wird sehr geschätzt, danke.

Zur Verdeutlichung: Das Programm hat ein Seitenpanel-Layout mit Schaltflächen. Und ein Hauptansichtslayout, das leer ist. Ich versuche, ein .xml-Layout auf dieses Hauptansichtslayout zu setzen und es so zu haben, dass, wenn irgendwelche Knöpfe in dieser Hauptansicht gedrückt werden, eine Klasse für dieses Layout damit umgehen wird.

+0

Ich verstehe Ihre Frage nicht vollständig, was Sie tun möchten, sind verschachtelte Ansichten mit benutzerdefinierten Inhalten? Möchten Sie auch die Geräteeingänge separat in jeder Ansicht behandeln? Ich verstehe deine Frage nicht wirklich, da eine und nur eine Ansicht den Fokus zur Zeit hat ... – Franco

+0

Vielleicht ist Sichten das falsche Wort. Ich könnte Layouts meinen. Es gibt ein Layout für das Sidepanel mit einigen Buttons und ein Layout in der Hauptansicht, das auch einige Buttons hat. Diese sind beide in einem anderen Layout enthalten, dem Root-Layout, das alles enthält. Die Hauptansicht ist änderbar, also suche ich nach einer Möglichkeit, Layouts hinzuzufügen/zu entfernen. Auch würde ich gerne eine Klasse für jedes Layout haben, das für seine eigenen Tasten drücken wird. – Demonofloom

Antwort

0

Wenn ich verstehe, was Sie zu tun versuchen, dann würde ich eine der Layoutklassen erweitern, um meine Panel-Klassen zu erstellen und sie dann einfach in ein anderes Layout (RelativeLayout) in der main.xml-Layoutdatei zu verschachteln.

public class MyPanel extends LinearLayout 
    implements Button.onClickListener { 
    // Do things which are common to the side & main panels in this class 
} 

public class MySidePanel extends MyPanel { 
} 

public class MyMainPanel extends MyPanel { 
} 

Dann in dem res/layout/main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 
    <com.mydomain.MySidePanel 
     android:orientation="vertical" 
     android:id="@+id/side_panel_layout" 
     android:layout_height="fill_parent" 
     android:layout_width="fill_parent" > 
     <Button 
      android:id="@+id/sp_Button1" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" /> 
     <!-- Do other button --> 
    </com.mydomain.MySidePanel> 
    <com.mydomain.MyMainPanel> 
    <!-- main panel layout here --> 
    </com.mydomain.MyMainPanel 
</RelativeLayout> 

In der oben habe ich natürlich setzte nur eine Taste in der Seitenwand und verließ das Hauptfeld leer, aber Sie sollten in der Lage sein, um meine Vorgehensweise davon zu sehen. Sie müssen auch das relative Layout android: layout_ properties hinzufügen.

In Ihrer Aktivität, setContentView (...) und erstellen Sie Instanzen Ihrer Panel-Klassen.

EDIT: Ich meinte, dass zu erwähnen, obwohl das oben absolut das gesamte Layout zu setzen scheint, es gibt nichts, Sie von der Erstellung neue MyMainPanel Layouts zur Laufzeit zu stoppen und sie anstelle des Originals in den RelativeLayout Eltern austauschen.

Verwandte Themen