Как показать другой контент через ViewPager? - PullRequest
0 голосов
/ 30 июня 2019

У меня следующая проблема:

У меня есть MainActivity, где ViewPager находится.Страница из ViewPager является фрагментом, который содержит imageview и несколько textviews.Когда пользователь нажимает на изображение, другой контент должен быть показан.И, наверное, я не понимаю, как я могу это сделать.Как я знаю, я не могу разместить FrameLayout на своей странице Fragment и показать еще один фрагмент с необходимым содержанием.Также я не могу поместить этот фрагмент в MainActivity, так как я не могу изменить его из своего фрагмента (и если я хочу изменить ViewPager для моего фрагмента с необходимым содержимым, я не могу поймать клики на ImageView).Я нашел одно решение: иметь 2 макета на фрагменте страницы (сначала для ViewPager, а затем для контента, который будет показан после) и менять их видимость каждый раз, но я не думаю, что это лучшая идея.Итак, может быть, у вас есть лучшие варианты?

UPD

Мне нужно из этого

enter image description here

после нажатия на изображение получите:

enter image description here

1 Ответ

1 голос
/ 30 июня 2019

вы можете использовать VeiwSwitcher который вы можете узнать об этом здесь

public class ViewSwitcher extends ViewAnimator, который переключается между двумя представлениями и имеет фабрику, из которой создаются эти представления. Вы можете использовать фабрику для создания представлений или добавить их самостоятельно. ViewSwitcher может иметь только два дочерних представления, из которых одновременно отображается только одно.

например:

<ViewSwitcher
    android:id="@+id/viewSwitcher1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:inAnimation="@android:anim/slide_in_left" >

    <LinearLayout
    android:id="@+id/view1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
    //Content of first layout 

    </LinearLayout>


<LinearLayout
    android:id="@+id/view2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
   //Content of second layout

    </LinearLayout>
</ViewSwitcher>

так что в основном у вас есть Два ViewGroup, и первый виден пользователю, а второй скрыт. и вы можете иметь только два View в стороне от ViewSwitcher, и вы можете переключаться между ними с помощью Button:

viewSwitcher =   (ViewSwitcher)findViewById(R.id.viewSwitcher1);
    myFirstView= findViewById(R.id.view1);
    mySecondView = findViewById(R.id.view2);
    button1 = (Button) findViewById(R.id.button1);
    button1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            if (viewSwitcher.getCurrentView() != myFirstView){

                viewSwitcher.showPrevious(); 
            } else if (viewSwitcher.getCurrentView() != mySecondView){

                viewSwitcher.showNext();
            }
        }
    });

и не имеет значения, какой view или id используется для этих двух видов.

, поэтому просто поместите ViewSwitcher в макет Fragment и поместите изображение в xml или программно и используйте Two Button один в первом макете и один во втором макете для переключения между ними. Надеюсь, что это работает для вас. Вы также можете использовать Dialog, но в вашем случае это будет ужасно!

...