2011-02-10 1 views
1

그룹 및 하위가 포함 된 확장형 목록이 있습니다. 각 자식은 이미지, 텍스트 및 다른 이미지를 보유하는 TableRow 클래스입니다. 너비가 그룹 행 너비보다 작 으면 자식 행 앞뒤에 간격 띄우기가 발생합니다. 문제는 자녀를 만지면 오프셋 영역이 선택 상태로 바뀌고 실제 자식 영역은 그대로 유지됩니다. 하위 영역 만 선택하면 반대 효과가 필요합니다.Android에서 확장 가능한 목록 하위 선택 문제

답변

1

확인. 해결책을 찾았습니다.

  1. 장애인 isChildSelectable : getChildView에서

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