我正在尝试制作自定义列表。 在列表适配器中,我已经在getView(..)方法中实现了这段代码:
final RelativeLayout layout = (RelativeLayout) row.findViewById(R.id.layout_main);
layout.setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
{
layout.setBackgroundColor(context.getResources().getColor(R.color.asia_red_color));
return true;
}
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
{
layout.setBackgroundColor(context.getResources().getColor(R.color.white));
return true;
}
}
return false;
}
});
请注意,我实现的侦听器阻止/覆盖执行我在MainActivity中实现的onItemClickListener。
任何解决方案?
答案 0 :(得分:1)
只有OnItemClickListener
定义选择器
可绘制文件夹中的bkg.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@color/white" />
<item android:drawable="@color/yellow" />
</selector>
将选择器设置为listview。到自定义布局android:background="@drawable/bkg"
在color.xml中定义颜色
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="white">#FFFFFF</color>
<color name="yellow">#FFFF00</color>
</resources>
同时检查您的lsitview行项目是否有按钮。单击该按钮可能会获得焦点。
答案 1 :(得分:0)
我不确定这里发生了什么,但您可以尝试在OnTouchListener
的{{1}}分支中调用超类的default
,如下所示:< / p>
switch
请原谅我,如果语法不正确,因为我现在只在浏览器上,但你明白了。