我有一个带有一些ListItems的ListFragment。 在一个ListItem中,我有一些视图,还有一个带有CardViews的RecyclerView。 在CardView中是一个ImageView。
我想使用RecyclerView在其中包含一些图片,我想滚动图片。我还想用两个手指手势来缩放图片。 (如果有人知道一步一步的好教程,那会很好)。但我也想点击并长按图片。我需要点击并在我的ListArrayAdapter或我的ListFragment中长按。
我找到了这个接受的答案: Parent click event not firing when recyclerview clicked
但点击次数无法到达Adapter或ListFragment。如果我使用LongClick播放更多内容应用程序崩溃,因为CardView调用performLongClick并以NullPointerException结束:
java.lang.NullPointerException:尝试调用接口方法' boolean android.view.ViewParent.showContextMenuForChild(android.view.View)'在null 对象参考 在android.view.View.showContextMenu(View.java:6346) 在 android.view.View.performLongClickInternal(View.java:6280) 在android.view.View.performLongClick(View.java:6234)
那么 - 我必须做的更多,一切正常吗?
这是rowlayout - 稍微缩小了一点:
<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"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context="ListFragment"
android:orientation="vertical"
android:descendantFocusability="blocksDescendants"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:gravity="left|center_vertical"
android:layout_marginLeft="5dp"
android:minHeight="30dp"
android:orientation="vertical"
android:layout_toLeftOf="@+id/icon"
>
<RelativeLayout
android:id="@+id/myLayout"
android:layout_width="match_parent"
android:layout_height="320dp"
android:layout_marginTop="5dp"
android:orientation="horizontal"
>
<android.support.v7.widget.RecyclerView
android:id="@+id/myRecyclerView"
android:layout_width="wrap_content"
android:layout_height="350dp"
/>
</RelativeLayout>
</LinearLayout>
</RelativeLayout>
</LinearLayout>
我有一个OnClickListener(onClick(View))用于myLayout-View和ListAdapter中的myRecyclerView-View。 在ListFragment中,我的onListItemClick方法中也有一个断点。但没有任何事情发生。
CardView布局:
<com.package.MyCardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/card_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
card_view:cardCornerRadius="4dp"
android:layout_margin="5dp"
android:descendantFocusability="blocksDescendants"
>
<ImageView android:id="@+id/picture"
android:src="@drawable/picture_empty"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_margin="0dp"
android:padding="0dp"
android:adjustViewBounds="true"
android:visibility="invisible"
xmlns:android="http://schemas.android.com/apk/res/android" />
</com.package.MyCardView>
您可以在上面链接中接受的答案中看到MyCardView的来源。调用了Initialize(),如果我在ImageView / CardView上触摸短路,则调用onInterceptTouchEvent()但是有一个ACTION_DOWN事件,然后调用onDown()然后调用onLongPress()。
答案 0 :(得分:0)
您应该发布更多代码,以便我们更好地调试此问题。
我不知道你在做什么,但通常的模式是如何使你的适配器/片段实现View.OnClickListener
和View.OnLongClickListener
并将其附加到你的ViewHolders
中适当的观点。
捏缩放的东西。我对Zoomy
有很好的经验