Android可点击不在listview上工作

时间:2015-01-29 14:46:22

标签: android

我想使用涟漪效果设置为android:clickable="true"但是当我这样做时onClick事件无效,但onLongClick正在运行。我该怎样解决这个问题?< / p>

如果我没有设置android:clickable它正在运作。

我的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:paddingBottom="4dp"
              android:paddingTop="4dp"
              android:orientation="horizontal"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:clickable="true"
              android:longClickable="true"
              android:background="@drawable/ripple">

代码:

listView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                Log.w("Item Clicked","Ok");
            }
        });
        listView.setOnItemLongClickListener(new OnItemLongClickListener() {
            public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                    int pos, long id) {
                Log.w("Item Long Clicked","Ok");
                }
        }); 

2 个答案:

答案 0 :(得分:1)

不要在listview上使用 setOnItemClickListener ,而是尝试将 setOnClickListener 用于从适配器返回的每个视图。您需要使用setItemsCanFocus设置列表。

ListView OnItemClickListener Not Responding?

您的列表视图行已禁用OnItemClickListener,因为您在行布局中有一个可点击的线性布局,可以接管焦点。

你也可以看看这里: OnItemClickListener and OnClickListener not working for ListView

答案 1 :(得分:0)

这是一个有趣的问题,因为点击的某个地方没有注册该事件。我觉得这与this与您的问题相关的其他答案有关。

  

当您设置OnItemClickListener时,只有在ListView的子节点没有设置OnClickListener时才会调用onItemClicked事件。

说实话,除了在onClickListener而不是ListView上设置LinearLayout之外,没有足够的上下文来表达你真正告诉你的内容。或者,在ListView行上设置涟漪效果(但我不知道在哪里设置)。

编辑:要回答您的问题,它确实有效。由于焦点,只是在ListView中无效。