当有带链接的textView时,RecyclerView itemView onClickListener

时间:2016-06-29 07:04:42

标签: android android-recyclerview onclicklistener

我有RecyclerView用户可以选择行。我已将onClickListener添加到itemView以更改所选行的背景。

private void bindSelect(final Comment comment){

    itemView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View view) {

            if(comment.isScelected()){
                itemView.setBackgroundColor(0);
                comment.setScelected(false);
            }else{
                itemView.setBackgroundColor(mContext.getResources().getColor(R.color.comment_select_background));
                comment.setScelected(true);
            }

        }
    });

}

Everthing工作,直到我们决定在行中的文本视图中启用autolink

之后当用户点击包含link的textview时,itemView.onClickListner没有抓住点击!!

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:wisgoon="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:clickable="true" >

<ImageView
    android:id="@+id/comment_avatar"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_centerVertical="true"
    android:layout_marginBottom="@dimen/eight"
    android:layout_marginEnd="@dimen/regular_margin"
    android:layout_marginLeft="@dimen/eight"
    android:layout_marginRight="@dimen/regular_margin"
    android:layout_marginStart="@dimen/eight"
    android:layout_marginTop="@dimen/eight" />

<TextView
    android:id="@+id/comment_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="@dimen/eight"
    android:layout_toLeftOf="@+id/comment_avatar"
    android:layout_toStartOf="@+id/comment_avatar"
    android:gravity="right"
    android:lines="1"
    android:textColor="@color/textColorDark"
    android:textSize="13sp" />

<TextView
    android:id="@+id/comment_date"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginEnd="@dimen/four"
    android:layout_marginRight="@dimen/four"
    android:layout_marginTop="@dimen/eight"
    android:layout_toLeftOf="@+id/comment_name"
    android:layout_toStartOf="@+id/comment_name"
    android:gravity="right"
    android:lines="1"
    android:textColor="@color/textColorLight"
    android:textSize="11sp" />

<TextView
    android:id="@+id/comment_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/comment_name"
    android:layout_marginBottom="@dimen/four"
    android:layout_marginLeft="@dimen/eight"
    android:layout_marginStart="@dimen/eight"
    android:layout_marginTop="@dimen/minus_four"
    android:layout_toLeftOf="@+id/comment_avatar"
    android:layout_toStartOf="@+id/comment_avatar"
    android:autoLink="all"
    android:gravity="right"
    android:textColor="@color/textColorDarkGray"
    android:textSize="11sp" />

如何解决这个问题?

更新 Dudes我连续多个可点击区域

2 个答案:

答案 0 :(得分:0)

您必须使用链接启用向OnTouchListener添加TextView并返回false布尔值以显示尚未处理的触摸

很像这样

findViewById("R.id.comment_text").setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if(event.getAction() == MotionEvent.ACTION_UP){
            // Do what you want with text link
        }
        return false;
    }
});

答案 1 :(得分:0)

在您的xml文件中,您已为所有人设置了自动链接。根据您的评论,您希望显示链接,但需要禁用click事件。所以在xml文件中添加以下行。

android:linksClickable:"false"