如何禁止Gridview上下滑动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何禁止Gridview上下滑动相关的知识,希望对你有一定的参考价值。

参考技术A 在做拼图游戏的时候,拼图界面使用了Gridview,我不希望它可以滑动,但是SDK中没有相应的API或者XML属性来禁止Gridview滑动,怎么办呢?我们可以通过重写Gridview类的dispatchTouchEvent(MotionEvent ev)方法来禁止Gridview滑动。

1、自定义StationaryGridview类,扩展自android.widget.GridView类
2、重写dispatchTouchEvent方法

package com.went.Puzzle;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.GridView;

public class StationaryGridview extends GridView
public GrapeGridview(Context context)
super(context);


public GrapeGridview(Context context, AttributeSet attrs)
super(context, attrs);


public GrapeGridview(Context context, AttributeSet attrs, int defStyle)
super(context, attrs, defStyle);


//重写dispatchTouchEvent方法禁止GridView滑动
@Override
public boolean dispatchTouchEvent(MotionEvent ev)
if(ev.getAction() == MotionEvent.ACTION_MOVE)
return true;

return super.dispatchTouchEvent(ev);



3、在xml布局中引用StationaryGridview时记得包含包名
<com.went.Puzzle.StationaryGridview
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:numColumns="auto_fit"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:columnWidth="90dp"
android:stretchMode="columnWidth"
android:gravity="center"
/>

Android GridView去除自带边框点击效果去除右侧滚动条禁止上下滑动

一、去除自带边框点击效果:

 1 <com.example.gridview.MyGridView
 2             android:id="@+id/grid_upload_pictures"
 3             android:layout_width="0dp"
 4             android:layout_weight="2"
 5             android:paddingLeft="20dp"
 6             android:listSelector="@android:color/transparent"
 7             android:layout_height="wrap_content"
 8             android:horizontalSpacing="10dp"
 9             android:verticalSpacing="10dp"
10             android:numColumns="1"
11             android:stretchMode="columnWidth"/>

 

二、去除右侧滚动条

 1 package com.example.gridview;
 2 
 3 import android.content.Context;
 4 import android.util.AttributeSet;
 5 
 6 public class MyGridView extends android.widget.GridView {
 7     public MyGridView(Context context, AttributeSet attrs) {
 8         super(context, attrs);
 9     }
10 
11     public MyGridView(Context context) {
12         super(context);
13     }
14 
15     public MyGridView(Context context, AttributeSet attrs, int defStyle) {
16         super(context, attrs, defStyle);
17     }
18     //重写了GridView的onMeasure方法,使其不会出现滚动条
19     @Override
20     public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
21         int expandSpec = MeasureSpec.makeMeasureSpec(
22                 Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
23         super.onMeasure(widthMeasureSpec, expandSpec);
24     }
25 }

 

 

三、禁止上下滑动

 1 package com.example.gridview;
 2 
 3 import android.content.Context;
 4 import android.util.AttributeSet;
 5 
 6 public class MyGridView2 extends android.widget.GridView{  
 7   
 8     public HotKeyGridView(Context context, AttributeSet attrs, int defStyle) {  
 9         super(context, attrs, defStyle);  
10     }  
11   
12     public HotKeyGridView(Context context, AttributeSet attrs) {  
13         super(context, attrs);  
14     }  
15   
16     public HotKeyGridView(Context context) {  
17         super(context);  
18     }  
19   
20   
21     public boolean dispatchTouchEvent(MotionEvent ev) {  
22         if(ev.getAction() == MotionEvent.ACTION_MOVE){  
23             return true;//禁止Gridview进行滑动  
24         }  
25         return super.dispatchTouchEvent(ev);  
26     }  
27 }  

 

 

感谢:

http://blog.csdn.net/super11235/article/details/55050141

http://blog.csdn.net/go_to_learn/article/details/17761735

以上是关于如何禁止Gridview上下滑动的主要内容,如果未能解决你的问题,请参考以下文章

android GridView 如何设置为左右可滚动?

SCrollView嵌套GridView,ScrollView如何实现上啦加载下拉刷新???

flutter GridView 禁止滚动

flutter GridView 禁止滚动

在触摸该列时上下移动 Gridview 的列

android GridView 如何禁止滚动