Cambiare quale vista è il prossimo per mostrare in Viewflipper
-
27-10-2019 - |
Domanda
Quello che sto cercando di realizzare è avere una schermata principale con tre pulsanti e, a seconda del pulsante, si preme le corrispondenti diapositive della vista dal lato destro. ho usato ViewFlipper
e usando ViewFlipper.showNext()
Sono in grado di scivolare nella prossima vista. Vorrei poter cambiare quale vista è il prossimo in linea in modo da poter avere pulsanti corrispondenti alle viste.
Ho provato a usare ViewFlipper.add()
e ViewFlipper.remove()
per raggiungere questo obiettivo ma inutilmente. Qualcuno potrebbe dirmi dove sto sbagliando? Grazie in anticipo.
Di seguito è il mio codice per il mio main.xml
, e ogni vista è un layout separato.
<?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>
Ed ecco il mio onCreate()
metodo:
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();
}
});
Soluzione
Prova a usare questi metodi di ViewFlipper
:
public void removeViewAt (int index)
public void addView (View child, int index, ViewGroup.LayoutParams params)
Ciò dovrebbe consentire di rimuovere una determinata vista che non hai più bisogno e aggiungerne un'altra.