当ListView中的TextView可选时,ListView不可点击。

8
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
        Log.d("test1","run");
    }
});

列表视图没有响应,如果我像这样设置:
    <TextView
        android:id="@+id/comment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/username"
        android:layout_below="@+id/username"
        android:autoLink="web"
        android:textIsSelectable="true"
        android:textColor="#000000"
        android:textSize="14dp" />

去掉文本的可选属性后,列表项点击事件被触发。

我研究了一段时间,并遵循了一些互联网上的建议

例如:

在父视图中添加android:descendantFocusability="blocksDescendants"

这次点击监听器被正确触发了,但是当选择文本时出现错误:

TextView does not support text selection. Selection cancelled.

可以两个功能都存在吗?非常感谢。

1
你能否发布更多关于你的代码的信息?比如,你把这个TextView放在哪里了?你创建了适配器吗? - Adliano Alves
1
据我所知,您想选择 ListView 中的一些文本。如果我没错的话,为什么不改变您的应用程序设计呢?保留 onItemClickListener,当用户单击某个项目时,打开一个弹出窗口,让用户选择所需的文本。 - JJ86
2个回答

1
您可以在列表适配器中手动将OnClickListener添加到父级。不要忘记删除android:descendantFocusability="blocksDescendants"。我刚试过了。
viewHolder.parent.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(context, "Click", Toast.LENGTH_SHORT).show();
            }
        });

1
使用以下代码,删除

android:textIsSelectable="true"

它可能解决您的问题。

viewHolder.textView.setOnClickListener
(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Toast.makeText(context, "Click", Toast.LENGTH_SHORT).show();
            }
        });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接