Изменение того, какое представление находится рядом, чтобы показать в Viewflipper
-
27-10-2019 - |
Вопрос
То, что я пытаюсь достичь, - это иметь основной экран с тремя кнопками, и в зависимости от того, какая кнопка вы нажимаете соответствующий вид, в правой стороне. я использовал ViewFlipper
и использование ViewFlipper.showNext()
Я могу скользить в следующем виде. Я хотел бы иметь возможность изменить, какое представление будет следующим в очереди, чтобы у меня были кнопки, соответствующие представлениям.
Я пытался использовать ViewFlipper.add()
а также ViewFlipper.remove()
Чтобы достичь этого, но безрезультатно. Кто -нибудь может сказать мне, где я ошибаюсь? Заранее спасибо.
Ниже мой код для моего main.xml
, и каждый вид - отдельная макет.
<?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>
И вот мой onCreate()
Метод:
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();
}
});
Решение
Попробуйте использовать эти методы ViewFlipper
:
public void removeViewAt (int index)
public void addView (View child, int index, ViewGroup.LayoutParams params)
Это должно позволить вам удалить определенное представление, которое вам больше не нужно, и добавить еще один.