gpt4 book ai didi

java - 从另一个布局(ViewPager)获取按钮?

转载 作者:行者123 更新时间:2023-11-29 20:27:25 25 4
gpt4 key购买 nike

我正在开发一个应用程序,要求指定两个 ViewPagers 单独交互。我的问题是,底部的 ViewPager 必须包含在滑动时与 ViewPager 一起移动的按钮。也就是说,我无法获得主要 Activity 中所需的按钮,因为当前 View 的 axml 布局仅包含两个 viewpager,然后以编程方式设置它们。

这是 AXML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<android.support.v4.view.ViewPager
android:id="@+id/mainViewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<android.support.v4.view.ViewPager
android:id="@+id/bottomViewPager"
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_alignParentBottom="true">
</android.support.v4.view.ViewPager>
</RelativeLayout>

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#998822">
<Button
android:layout_width="75dp"
android:layout_height="75dp"
android:id="@+id/menu_button"
android:text="Menu"
android:textSize="12dp" />
</FrameLayout>

下面是我想要捕获按钮的方式:

m_MenuButton = (Button) findViewById(R.id.menu_button);

所以我的问题是:提供点击功能同时保持按钮与 View 分页器的关系(也就是在滑动时滑动)的最佳做法是什么?

最佳答案

我在工作中做过这件事,我所做的是为页面 View 的每个图 block 创建一个单独的 xml,因此将您的按钮移到一个 fragment 中。

然后让第二个 PageViewer 将 fragment 显示为图 block 。

然后是“tile” fragment 的构造函数,您可以将其传递到您想要在按下按钮时从中调用方法的类中。

所以你的基础页面应该是这样的

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<android.support.v4.view.ViewPager
android:id="@+id/mainViewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<android.support.v4.view.ViewPager
android:id="@+id/bottomViewPager"
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_alignParentBottom="true">
</android.support.v4.view.ViewPager>
</RelativeLayout>

然后为 fragment 创建第二个 Xml(这些可以是卡片、web View ,无论您显示的是什么)看起来像这样

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#998822">
<Button
android:layout_width="75dp"
android:layout_height="75dp"
android:id="@+id/menu_button"
android:text="Menu"
android:textSize="12dp" />

然后创建一个卡片 fragment 并将构造函数更改为

   ...
// create an instave variable called parent so you can access the other class
private SomeClassThatHasAMethodYouWantToCall parent;

static CardFragment newInstance(SomeClassThatHasAMethodYouWantToCall parent) {
CardFragment cf = new CardFragment();
this.parent = parent;
return f;
}


// then in onCreateView
pubklic View OnCreateView()
{
View myView = infalter.inflate(containter , R.layout.myCard, false);
Button b = myView.findViewById(R.id.Mybutton);
b.setOnClickListener(v -> callMethod()); // shortened for brevity
return myView;
}

private void callMethod(){
parent.callTheMethodYouWantInTheOtherClass();
}

当你实现你的 pagerAdapter 时,你将不得不覆盖 setPrimar

关于java - 从另一个布局(ViewPager)获取按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32360585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com