2011-03-02 79 views

回答

0

我認爲這是不可能的,因爲視圖自動設置爲垂直滾動列表就像ListView一樣,因爲ExpandableListView繼承了ListView。

0

但是,您不能禁用可展開列表視圖的自動滾動,但可以使用一些技巧來實現此目的。
您可以使用requestDisallowInterceptTouchEvent方法禁用可展開列表視圖的滾動。這將是不夠的。如果你不想在擴展時自動滾動exp,你應該計算子元素的高度,然後設置新的參數佈局爲exp,然後刷新滾動視圖。

boolean dispatchMode=false; 
expandableListView.setOnTouchListener(new View.OnTouchListener() { 
       @Override 
       public boolean onTouch(View v, MotionEvent event) { 

        int action = event.getAction(); 
        v.getParent().requestDisallowInterceptTouchEvent(dispatchMode); 
        switch (action) { 
        case MotionEvent.ACTION_DOWN: 
         // Disallow ScrollView to intercept touch events. 
         v.getParent().requestDisallowInterceptTouchEvent(dispatchMode); 

         break; 

        case MotionEvent.ACTION_UP: 
         // Allow ScrollView to intercept touch events. 
         v.getParent().requestDisallowInterceptTouchEvent(dispatchMode); 

         break; 
        } 

        // Handle ListView touch events. 
        v.onTouchEvent(event); 
        return true; 

       } 
      }); 




       @Override 
       public void onGroupExpand(int groupPosition) { 
        LinearLayout.LayoutParams param = (LinearLayout.LayoutParams) expandableListView.getLayoutParams(); 
        // param.height = (expandableListView.getChildCount() * 
        // expandableListView.getHeight()); 

        int childrenCount = leftAttributeAdapter.getChildrenCount(groupPosition); 
        param.height += leftAttributeAdapter.getChildrenCount(groupPosition) * expandableListView.getChildAt(0).getHeight(); 
        if (childrenCount > 2 && childrenCount < 10) { 
         param.height += 50 * 2; 
        } else if (childrenCount > 10) 
         param.height += 50 * childrenCount; 

        toast("Expandingggg Children count:" + leftAttributeAdapter.getChildrenCount(groupPosition) + " and Parameter heigh:" + param.height); 

        expandableListView.setLayoutParams(param); 
        expandableListView.refreshDrawableState(); 
        scrollView1.refreshDrawableState(); 

       } 
      }); 

      expandableListView.setOnChildClickListener(new OnChildClickListener() { 

       @Override 
       public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { 
        Toast.makeText(getActivity(), " Child Clicked***" + this.toString(), Toast.LENGTH_SHORT).show(); 
        return false; 
       } 
      }); 

      expandableListView.setOnGroupCollapseListener(new OnGroupCollapseListener() { 

       @Override 
       public void onGroupCollapse(int groupPosition) { 
        Toast.makeText(getActivity(), " Collapsed***" + this.toString(), Toast.LENGTH_SHORT).show(); 
        LinearLayout.LayoutParams param = (LinearLayout.LayoutParams) expandableListView.getLayoutParams(); 
        int childrenCount = leftAttributeAdapter.getChildrenCount(groupPosition); 
        param.height -= leftAttributeAdapter.getChildrenCount(groupPosition) * expandableListView.getChildAt(0).getHeight(); 
        if (childrenCount > 2 && childrenCount < 10) { 
         param.height -= 30; 
        } else if (childrenCount > 10) 
         param.height -= 120; 
        expandableListView.setLayoutParams(param); 
        expandableListView.refreshDrawableState(); 
        scrollView1.refreshDrawableState(); 

       } 
      }); 
相關問題