我有一個RecyclerView
,作爲一個項目,除其他外,還有一個SimpleDraweeView
。我想確定用戶是否點擊了SimpleDraweeView
的左側或右側部分,然後相應地進行填充。我已經嘗試設置onTouchListener
,但它被調用多次而不是一次,而且如果我滾動RecyclerView
,它會再次被調用。確定ImageView的左側還是右側被點擊
holder.getDoubleImageBinding().ivImage.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getX() < holder.getDoubleImageBinding().ivImage.getWidth()/2) {
mListener.onClickLeft();
} else {
mListener.onClickRight();
}
return false;
}
});
我也試着讓寬度和X
和設置onClickListener
,但X
始終是0.0。
holder.getDoubleImageBinding().ivImage.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
imageWidth = holder.getDoubleImageBinding().ivImage.getWidth()/2;
imageX = holder.getDoubleImageBinding().ivImage.getX();
holder.getDoubleImageBinding().ivImage.getViewTreeObserver().removeOnPreDrawListener(this);
return true;
}
});
holder.getDoubleImageBinding().ivImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (imageWidth > imageX) {
mListener.onClickLeft();
} else {
mListener.onClickRight();
}
}
});
編輯:
最後,我決定增加背後的ImageView
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/iv_image"
android:layout_width="0dp"
android:layout_height="299dp"
android:layout_marginTop="20dp"
android:src="@drawable/ap_circle"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@+id/guideline"
fresco:placeholderImage="@drawable/ap_placeholder"/>
<Button
android:id="@+id/btn_left"
android:layout_width="0dp"
android:layout_height="299dp"
android:background="@android:color/transparent"
app:layout_constraintBottom_toBottomOf="@id/iv_image"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@+id/btn_right"
app:layout_constraintTop_toTopOf="@id/iv_image"/>
<Button
android:id="@+id/btn_right"
android:layout_width="0dp"
android:layout_height="299dp"
android:background="@android:color/transparent"
app:layout_constraintBottom_toBottomOf="@id/iv_image"
app:layout_constraintLeft_toRightOf="@id/btn_left"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/iv_image"/>
我相信你應該得到onTouchEvent? – samiunn
正如我所說的,我已經嘗試過'onTouchEvent',但它在'RecyclerView'中的每個列表項被解僱,而且當我滾動時,它又被解僱了。 – jlively