Android中的可扩展列表子选择问题

时间:2011-02-10 10:50:34

标签: android expandablelistadapter

我有一个包含群组和儿童的可扩展列表。每个孩子都是TableRow类,包含图像,文本和另一个图像。它的宽度小于组宽度,这导致子行前后的偏移。 问题是当触摸孩子时,偏移区域变为选定的并且实际的子区域保持不变。当只选择子区域时,我需要相反的效果。

1 个答案:

答案 0 :(得分:1)

确定。找到了解决方案。

  1. 已禁用isChildSelectable:

    public boolean isChildSelectable(int groupPosition, int childPosition) {            
        return false;        
    }
    
  2. 在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;
    }