Android GridView使用View.GONE只隱藏內容而不隱藏空間的解決方案


最近在處理GridView的時候遇到這樣一個問題:Android手機客戶端接收服務端返回的一串數據(數據條數不固定),這串數據不一定都要顯示到GridView上,也就是說有一部分內容需要隱藏掉,即有一部分Item需要隱藏。

最開始處理的時候使用的是View.GONE來隱藏整個Item,測試之后發現,內容是隱藏了,但是隱藏內容的這個item仍占用界面空間,這是不符合項目要求的,我們想要的效果是:如果有隱藏內容就隱藏掉,並且不占用界面空間,下一個item會自動向上填充!

 

最后想到的辦法是動態的將Item整個隱藏並將width和height設置為0。測試了一個這樣做果然能夠實現羡慕需求。

 

設置代碼如下:

@Override
    public View getView(int position, View convertView, ViewGroup arg2) {
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.test_layout, null);
        }
        /**
         * 狀態為1、2時需要顯示Item,其他情況不顯示Item
         */
        int itemState = 0;
        switch(itemState){
            case 1:
                convertView.setVisibility(View.VISIBLE);
                break;
            case 2:
                convertView.setVisibility(View.VISIBLE);
                break;
                default://下面這段代碼就是讓GridView中的指定的item不顯示並且不占用界面空間的方法
                    convertView.setVisibility(View.GONE);
                    AbsListView.LayoutParams param = new AbsListView.LayoutParams(
                            //設置item的weidth和height都為0
                            0,
                            0);
                    //將設置好的布局屬性應用到GridView的Item上
                    convertView.setLayoutParams(param);
                    break;
        }
        return convertView;
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM