Frage

Ich versuche zu erreichen, dass ein Hauptbildschirm mit drei Schaltflächen und abhängig davon, welche Taste die entsprechenden Ansicht drücken, von der rechten Seite eindringt. Ich habe benutzt ViewFlipper und verwenden ViewFlipper.showNext() Ich kann in der nächsten Ansicht rutschen. Ich möchte ändern können, welche Ansicht als nächstes in der Linie steht, damit ich Schaltflächen haben kann, die Ansichten entsprechen.

Ich habe versucht zu benutzen ViewFlipper.add() und ViewFlipper.remove() Um dies zu erreichen, aber ohne Erfolg. Könnte mir jemand sagen, wo ich falsch gehe? Danke im Voraus.

Unten ist mein Code für meinen main.xml, und jede Ansicht ist ein separates Layout.

<?xml version="1.0" encoding="utf-8"?>
<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/flipper"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

<include
    android:id="@+id/main"
    layout="@layout/first_view" />

//Do I need these below?
<include
    android:id="@+id/first"
    layout="@layout/more_info_1" />

<include
    android:id="@+id/second"
    layout="@layout/more_info_2" />

<include
    android:id="@+id/third"
    layout="@layout/more_info_3" />

</ViewFlipper>

Und hier ist mein onCreate() Methode:

flipper = (ViewFlipper) findViewById(R.id.flipper);
    Button moreInfo1 = (Button) findViewById(R.id.moreinfobutton1);
    Button moreInfo2 = (Button) findViewById(R.id.moreinfobutton2);
    Button moreInfo3 = (Button) findViewById(R.id.moreinfobutton3);
    Button backButton1 = (Button) findViewById(R.id.backbutton1);
    Button backButton2 = (Button) findViewById(R.id.backbutton2);
    Button backButton3 = (Button) findViewById(R.id.backbutton3);

    moreInfo1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            flipper.setInAnimation(inFromRightAnimation());
            flipper.setOutAnimation(outToLeftAnimation());
            flipper.showNext();
            }
        });

    moreInfo2.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            flipper.setInAnimation(inFromRightAnimation());
            flipper.setOutAnimation(outToLeftAnimation());

            //What to put here to change the next View to something else?
            flipper.showNext();
            }
        });

    moreInfo3.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            flipper.setInAnimation(inFromRightAnimation());
            flipper.setOutAnimation(outToLeftAnimation());
            flipper.showNext();
            }
        });

    backButton1.setOnClickListener(new View.OnClickListener() {
         public void onClick(View view) {
             flipper.setInAnimation(inFromLeftAnimation());
             flipper.setOutAnimation(outToRightAnimation());
             flipper.showPrevious();      
         }
     });

    backButton2.setOnClickListener(new View.OnClickListener() {
         public void onClick(View view) {
             flipper.setInAnimation(inFromLeftAnimation());
             flipper.setOutAnimation(outToRightAnimation());
             flipper.showPrevious();      
         }
     });

    backButton3.setOnClickListener(new View.OnClickListener() {
         public void onClick(View view) {
             flipper.setInAnimation(inFromLeftAnimation());
             flipper.setOutAnimation(outToRightAnimation());
             flipper.showPrevious();      
         }
     });
War es hilfreich?

Lösung

Versuchen Sie diese Methoden von ViewFlipper:

public void removeViewAt (int index)
public void addView (View child, int index, ViewGroup.LayoutParams params)

Auf diese Weise können Sie eine bestimmte Ansicht entfernen, die Sie nicht mehr benötigen, und eine andere hinzuzufügen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top