我有一个包含群组和儿童的可扩展列表。每个孩子都是TableRow类,包含图像,文本和另一个图像。它的宽度小于组宽度,这导致子行前后的偏移。 问题是当触摸孩子时,偏移区域变为选定的并且实际的子区域保持不变。当只选择子区域时,我需要相反的效果。
答案 0 :(得分:1)
确定。找到了解决方案。
已禁用isChildSelectable:
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
在getChildView中实现了我的onTouchListener:
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild,
View convertView, ViewGroup parent)
{
parent.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
View childView = getMyView();
childView.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View view, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
view.setBackgroundColor(Color.BLUE);
return true;
}
if (event.getAction() == MotionEvent.ACTION_UP)
{
view.setBackgroundColor(Color.WHITE);
return true;
}
if (event.getAction() == MotionEvent.ACTION_OUTSIDE)
{
view.setBackgroundColor(Color.WHITE);
return true;
}
if (event.getAction() == MotionEvent.ACTION_CANCEL)
{
view.setBackgroundColor(Color.WHITE);
return true;
}
return false;
}
});
LinearLayout newView = new LinearLayout(context);
newView.setPadding(15, 0, 15, 0);
newView.addView(childView);
return newView;
}