android - 如何通过 ViewPager 显示其他内容?
问题描述
我有以下问题:
我有MainActivity
,ViewPager
放在哪里。Page ofViewPager
是 Fragment,其中包含imageview
几个textviews
. 当用户单击图像时,应显示另一个内容。可能我不明白我该怎么做。据我所知,我不能FrameLayout
在我的页面上放置Fragment
并在这里显示另一个包含所需内容的片段。此外,我无法将此片段放在 MainActivity 上,因为我无法从片段中更改它(如果我想用需要的内容更改片段上的 ViewPager,我无法捕获对 ImageView 的点击)。我找到了一个解决方案:在 Page Fragment 上有 2 个布局(第一个用于 ViewPager,第二个用于内容,将在之后显示),并且每次都更改它们的可见性,但我认为这不是最好的主意。所以,也许你有更好的变种?
UPD
我需要这个
点击图片后得到这个:
解决方案
你可以使用你可以在这里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 或以编程方式放置您的图像。并在第一个布局中使用两个Button
一个,在第二个布局中使用一个在它们之间切换。希望这对你有用。你也可以使用Dialog
,但在你的情况下它会变得丑陋!
推荐阅读
- python - time.sleep 函数在 kivy 应用程序中不起作用
- git - 由于 git rm 不起作用,如何从 git 中删除文件?
- python - 在python中使用表名作为sql参数
- amazon-web-services - Dynamodb 交易限制增加
- go - 使用 Reflect 获取自定义类型的基本类型
- sql-server - 如何使用 BindingSource 插入 SQL Server
- r - 在 R 中用模式查找和替换文本
- python - 将 pandas 数据框中的 datetime64[ns] 作为参数传递给函数
- mysql - 如何用另一个表中的数据(计算)填充 SQL 列
- javascript - 将 async/await 更改为 Promise