hinzufügen nicht aufgeblasenen Blick auf custom viewgroup

Ich habe versucht, Sie aufzublasen Ansichten von xml, um Ihre entsprechenden Objekte anzeigen, dann fügen Sie diese Objekte anzeigen, die der programmierten viewgroup. Aber immer, wenn ich rufe myviewgroup.addView(childview), die childview zu verlieren scheint alle Tasten und Dinge, die der xml-code sollte es gegeben haben. Aber die eine Sache, die childview nicht haben, ist die hintergrund-Farbe, die ich programmiert, um sicherzustellen, die childview hatte die richtigen Maße. Die childview gegeben ist, die richtigen Maße, aber keiner seiner Komponenten sichtbar sind

     LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    viewchanger= new ViewChanger(this); //my viewgroup
    View mainmenu= inflater.inflate(R.layout.main, null); //the xml code
    mainmenu.setBackgroundColor(Color.rgb(0, 0, 255));
    viewchanger.addView(mainmenu);
    setContentView(viewchanger); 

der obige code stellt einfach den hintergrund von meinem Bildschirm zu blau, aber keine der Tasten nach oben zeigen. auch, wenn ich setContentView(mainmenu) alles zeigt sich aus, dass xml-code perfekt sowie die hintergrund-Farbe. Der Punkt dieses viewgroup ist, so kann ich wechseln zwischen mehreren Ansichten-unabhängig von der Reihenfolge, wie childviews.

Hier ist der code für viewchanger. Ich will es haben 7 untergeordneten Ansichten, und wenn ich eine Methode aufrufen
setView(int v) ich möchte, dass alle anderen Ansichten gegangen zu sein, und ich will nur, dass man anzeigen zu sehen sein.

public class ViewChanger extends ViewGroup{

/**Represent which view to show, only one can show at a time*/
public static final int MainMenu=0, ChooseMap=1, MapOptions=2, 
        SetLocation=3, view=4, EditMap=5, CreateMap=6;
private int current; //the current view
private View[] views= new View[7];

public ViewChanger(Context context) {
    super(context);
            //load 7 views into view array here
            //LayoutInflater inflater =    (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
           /*views[0]= inflater.inflate(R.layout.main, null);
            * views[1]= inflater.inflate(R.layout.choose, null);
            * views[2]= inflater.inflate(R.layout.mapoptions, null);
        * views[0].setBackgroundColor(Color.rgb(255, 0, 0));
    * views[1].setBackgroundColor(Color.rgb(255, 255, 0));
    * views[2].setBackgroundColor(Color.rgb(0, 255, 0));*/
    * addView(views[0]);
    * addView(views[1]);
    * addView(views[2]);
            * this is how i want to load the childviews*/

}

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
    for(int i = 0; i < getChildCount(); i++){
                getChildAt(i).layout(0, 0, getWidth(), getHeight());
            }
}
    /**Sets the view of the view group, only one view can be viewed at a time*/
public void setView(int v){
            current=v;
    for (int i=0; i<views.length; i++){
        if (v==i){
            views[i].setVisibility(View.VISIBLE);
        } else{
            views[i].setVisibility(View.GONE);
        }
    }
}

Wenn ich Sie laden das Kind, Blick in die ViewChanger Konstruktor, der viewgroup nur zeigt mir die Farben im hintergrund, welcher Ansicht ich durch setView(int v), und nicht die Tasten.

Hier ist der xml-code für Haupt -, aber alle anderen sehen sehr ähnlich wie diese:

 <?xml version="1.0" encoding="utf-8"?>

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:gravity="center"
   android:orientation="vertical" >


 <TextView
    android:id="@+id/title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:text="The title"
    android:textAppearance="?android:attr/textAppearanceLarge" />


 <TextView
    android:id="@+id/welcome"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Welcome [...]"
    android:textAppearance="?android:attr/textAppearanceLarge" />




 <Button
    android:id="@+id/load"
    android:layout_width="122dp"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:text="Load Map" />




 <Button
    android:id="@+id/create"
    android:layout_width="122dp"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:text="Create Map" />






 <Button
    android:id="@+id/users"
    android:layout_width="122dp"
    android:layout_height="wrap_content"
    android:text="Other User" />

</LinearLayout>
  • Was bedeutet ViewChanger Erben aus? Wenn es nur reicht ViewGroup, es wird wahrscheinlich keine vordefinierten Zeichnung code und stellen Sie keine, wird es nicht ziehen, keine Kinder. Auch, was ist der Inhalt von R. layout.main?
  • ich aktualisierte die Frage, danke für jede Hilfe
InformationsquelleAutor Isaac | 2012-06-15
Schreibe einen Kommentar