我想使用涟漪效果设置为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");
}
});
答案 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
中无效。