Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android下activity中多個listview只允許主界面滾動

android下activity中多個listview只允許主界面滾動

編輯:關於Android編程

之前發現了自己的APP在處理兩個listview時產生的一個bug。當兩個listview中的item數量多出手機屏幕時,listview不能顯示完全。一開始覺得只要加一個scrollview就可以了,但是後來發現想法是錯誤的,因為listview本身也是一個scrollview,那麼scrollview嵌套scrollview的問題就很麻煩了,到底把滾動權交給誰,結果是哪個listview都不能滾動,後來谷歌了一大圈,終於發現了兩個帖子,給我啟發: 1 stackoverflow http://stackoverflow.com/questions/3495890/how-can-i-put-a-listview-into-a-scrollview-without-it-collapsing 2 csdn http://blog.csdn.net/huangbiao86/article/details/7978149 主要的解決方法,就是禁用listview的滾動條,從而只有一個scrollview的滾動條。那麼怎麼禁用?或者限定listview的android:layout_width。 網上提供的方法就是在刷新listview之前,計算list item的總的高度,從而設置android:layout_width,那麼就可以做到固定高度了。  
/***  
     * 動態設置listview的高度  
     *   
     * @param listView  
     */    
    public void setListViewHeightBasedOnChildren(ListView listView) {    
        ListAdapter listAdapter = listView.getAdapter();    
        if (listAdapter == null) {    
            return;    
        }    
        int totalHeight = 0;    
        for (int i = 0; i < listAdapter.getCount(); i++) {    
            View listItem = listAdapter.getView(i, null, listView);    
            listItem.measure(0, 0);   
            totalHeight += listItem.getMeasuredHeight();    
        }    
        ViewGroup.LayoutParams params = listView.getLayoutParams();    
        params.height = totalHeight    
                + (listView.getDividerHeight() * (listAdapter.getCount() + 1));    
        listView.setLayoutParams(params);    
    }    

 

    雖然這麼做了,但是我最後還是發現高度不對,為什麼呢?我調試發現,無論item裡面的textview不管有幾行,item的getMeasreHeight始終是固定值。那麼怪不得了,textview的高度無法計算的話,那麼高度也還是確定不了。無奈,我只能選擇折中,設置textview的屬性: android:sinleline="true" android:ellipsie="end" android::layout_width ="wrap_content" 那麼設置textview行為固定啦,這樣就可以保證高度計算的准確。 至此,bug解完  
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved