android - ViewPager 项目布局中的 OnclickAction

标签 android xml layout android-viewpager

我想将 setOnClickListener 设置到我的 ImageView,它位于 ViewPagerItemXML 中。

在我的 activityXML 中,我有 ViewPager 和其他几个按钮。在我的 ViewPagerItemXML 中,我有可点击的 ImageView。我想在 Activity 中单击 ImageView 后执行一些操作。不幸的是,OnClickListener 根本不会触发。

LayoutInflater inflater = (LayoutInflater) this
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
itemView = inflater.inflate(R.layout.viewPager_item, null);

onThemePhotoClick= (ImageView)itemView.findViewById(R.id.themePhoto);
onThemePhotoClick.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
          Log.i(TAG,"clickOnPhoto!");
     });

编辑

我的 Activity XML

LinearLayout
        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:orientation="vertical"
        android:weightSum="10">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical"
        android:id="@+id/iconTools">

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_navigate_before_black_36dp"
            android:background="@android:color/transparent"
            android:id="@+id/backButton"
            />
    </LinearLayout>

    <LinearLayout

        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:layout_height="0dp"
        android:layout_weight="8"
         android:id="@+id/viewPagerLayout">

        <android.support.v4.view.ViewPager
        android:id="@+id/visitMuseumPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:listitem="@layout/art_work_item" />
</LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical"
        android:id="@+id/bottomButtonToolbar">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/qrScannerButton"
        android:text="QrCode" />
</LinearLayout>

    </LinearLayout>

和 viewPagerItem

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:fillViewport="true">
<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingTop="10dp">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="200dp">
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/WelcomeScreenDarker"
            android:id="@+id/imageBackground"
            />

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:id="@+id/themePhoto"
                android:clickable="true"
                />
        </RelativeLayout>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/artWorkCounter"
        android:textColor="@color/searchHint"
        android:textSize="12sp"
        android:layout_marginRight="80dp"
        android:layout_gravity="end" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/artWorkDescriptionTitle"
           android:paddingTop="15dp"
            android:textSize="20sp"
            android:textStyle="bold"
            android:layout_margin="10dp"/>

        <TextView

            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/artWorkDescription"
            android:layout_margin="10dp"
           />
    </LinearLayout>
</ScrollView>
    </LinearLayout>

编辑 2 我通过将 OnClickListener 添加到 viewpagerAdapterClass 来解决我的问题。它可能会触发另一个 View 。如果有人知道如何触发实际 Activity 类的按钮,请给我提示

最佳答案

View 在适配器中触发而不是在 Activity 中触发是正常的。

在您的 Activity 中膨胀的层次结构仅包含 ViewPager,它在 Adapter 的帮助下包含不同的 ViewPagerItems。

想法是您需要将该点击事件传递回 Activity 。为此,创建一个接口(interface)回调,让您的 Activity 实现它并从您的适配器调用该回调。

关于 SO 的许多问题将对您有所帮助。 Call Activity method from adapter

关于android - ViewPager 项目布局中的 OnclickAction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39895725/

相关文章:

Android 添加数据到自定义布局和 ScrollView

php - 在布局中处理字符串长度

android - 我在哪里放置 themes.xml?

android - Locale.SPANISH 在哪里?

android - 图库和全屏 ImageView,将它们放在一起时出现问题

android - react-native log-android adb 调用失败

android - 按下 handle 以不关闭 Activity

javascript - 我无法在 XML 中使用 find() 方法进行搜索

javascript - 自定义图表需要更多帮助

r - 更改两列布局四开中的字体大小