我想将 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/