2011-02-10 13 views
1

私はグループと子供を含む拡張可能なリストを持っています。それぞれの子は、イメージ、テキスト、および別のイメージを保持するTableRowクラスです。その幅は、子行の前後のオフセットにつながるグループ幅よりも小さい。 問題は、子に触れるときに、オフセット領域が選択され、実際の子領域が元のままであることです。子エリアのみが選択されているときは逆の効果が必要です。Androidで展開可能な子の選択問題

答えて

1

解決策を見つけました。

  1. 無効isChildSelectable:

    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; 
    } 
    
:getChildViewの私onTouchListenerを実装

public boolean isChildSelectable(int groupPosition, int childPosition) {    
    return false;   
} 
  • 関連する問題