GridView禁止上下滾動的方法


   通常情況下,我們使用GridView來完成類似表格的布局,這種布局,我們只需要設置列數,會自動根據適配器的數據進行適配,非常靈活.

   GridView其實就是一個容器.允許向其內部添加控件,通常情況下,其內部類似一個ScrollView.是可以上下滑動的,很好的做到了屏幕適配.但是在有些情況下.我們需要GridView內部是不可以滑動的,在API中是沒有這一項的,想簡單又快速的實現,到底有沒有什么好方法呢?

   答案是有點.下面我們通過三種方式來實現這種需求:

①最簡單的實現方式:

gridView_sort.setOnTouchListener(new View.OnTouchListener() {

                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    return MotionEvent.ACTION_MOVE == event.getAction() ? true
                            : false;
                }
            });

②自定義View的實現方式

重寫dispatchTouchEvent

@Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        if(ev.getAction() == MotionEvent.ACTION_MOVE)
        {
            return true;
        }
        return super.dispatchTouchEvent(ev);
    }

同時,這種方式指示禁止了GridView的上下滑動問題,並沒有從根本上解決問題,因為GridView是有高度的,這樣其實還是可以看到GridView類似ScrollView可以上下滑動的影子,於是,我們想到了另一種方式,那就是設置GridView 的高度,

  艱難的折騰之路開始了,斷點嘗試了多次,也沒有得到GridView 的高度.后來追蹤一下發現,GrivdView的高度值只有在Adatpter的getView   才會有值 ,並且前幾次調用時還沒有,后面才有的。

public View getView(int position, View convertView, ViewGroup parent) {         convertView = LayoutInflater.from(context).inflate(R.layout.item, null);           AbsListView.LayoutParams param = new AbsListView.LayoutParams(                 android.view.ViewGroup.LayoutParams.FILL_PARENT,                 mGv.getHeight()/ROW_NUMBER);


免責聲明!

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



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