2013-04-17 51 views
-1

我一直在試圖將一個ListView破解成一個ScrollView。正如許多線索指出的那樣,這是一個非常糟糕的做法(請參閱How can I put a ListView into a ScrollView without it collapsing?)。我目前正在測量ListView的高度,並使用此處提出的解決方案(https://stackoverflow.com/a/3495908/924217)來固定其大小,該解決方案對於等高行非常適用,但對於可變高度(報告所有行的最小高度)測量不正確。對於快速和髒的修復,沒有人知道如何正確測量高度可變的行的高度?ScrollView裏ListView的替代

更合適的是,任何人都可以使用LinearLayouts指出一個很好的解決方法。我正在嘗試使用ListView,因爲我有需要動態添加和刪除的項目。如果沒有適配器和ListView佔用的其他細節,我想不出任何方便的方法。有人能幫我找到一個正確處理的例子嗎?另外,有沒有任何開源項目涵蓋了這個?我見過許多人用類似問題的方式提出了類似的問題,但他們的解決辦法很少。

回答

0

我會建議您應該使用listfragment,以便您可以動態地添加/刪除項目。

+0

我同意片段可以幫助促進了模塊化設計,但仍然沒有解決ListView的問題被嵌入在滾動型。這主要由於處理觸摸事件而產生問題。 – BKW

0

這裏parentScroll =你的主滾動視圖和childScroll =您的ListView

parentScroll.setOnTouchListener(new View.OnTouchListener() { 

       public boolean onTouch(View v, MotionEvent event) { 
        Log.v("PARENT", "PARENT TOUCH"); 
        findViewById(R.id.child_scroll).getParent() 
          .requestDisallowInterceptTouchEvent(false); 
        return false; 
       } 
      }); 
      childScroll.setOnTouchListener(new View.OnTouchListener() { 

       public boolean onTouch(View v, MotionEvent event) { 
        Log.v("CHILD", "CHILD TOUCH"); 
        // Disallow the touch request for parent scroll on touch of 
        // child view 
        v.getParent().requestDisallowInterceptTouchEvent(true); 
        return false; 
       } 
      });