Изменение того, какое представление находится рядом, чтобы показать в Viewflipper

StackOverflow https://stackoverflow.com/questions/8843687

  •  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)

Это должно позволить вам удалить определенное представление, которое вам больше не нужно, и добавить еще один.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top