在做拼图游戏的时候,拼图界面使用了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"
/>