android GridView禁止上下滑动以及禁止滚动条显示的方法。

 一、 android处理鼠标滚轮事件,并不是如下的函数:
1) public boolean onKeyDown(int keyCode, KeyEvent event)
2) public boolean dispatchKeyEvent(KeyEvent event) 
3) public boolean onTouchEvent(MotionEvent event)
 而是如下的函数
publicboolean onGenericMotionEvent(MotionEvent event);
所有View和Activity都可重写该函数,来自己处理滚轮事件。
网上很多人说用重写dispatchTouchEvent和onTouchEvent方法可以实现禁止滚动的功能,我测试了下,都是不行的,只有重写onGenericMotionEvent方法可以。
具体代码如下:
import android.annotation.SuppressLint;
import android.content.Context;
import android.util.Log;
import android.view.MotionEvent;
import android.widget.GridView;

public class MyGridView extends GridView {

	private static final String TAG = "FreeRDP.SessionActivity";

	public MyGridView(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
	}

	// 通过重新dispatchTouchEvent方法来禁止滑动
	@Override
	public boolean dispatchTouchEvent(MotionEvent ev) {
		// TODO Auto-generated method stub
		Log.v(TAG, "dispatchTouchEvent....4444444444........." + ev.getAction());
		if (ev.getAction() == MotionEvent.ACTION_MOVE) {
			return true;// 禁止Gridview进行滑动
		}
		return super.dispatchTouchEvent(ev);
	}

	@Override
	public boolean onTouchEvent(MotionEvent event) {
		// 重写的onTouchEvent回调方法
		Log.v(TAG, "dispatchTouchEvent...5555........" + event.getAction());
		switch (event.getAction()) {
		// 按下
		case MotionEvent.ACTION_DOWN:
			return super.onTouchEvent(event);
			// 滑动
		case MotionEvent.ACTION_MOVE:
			break;
		// 离开
		case MotionEvent.ACTION_UP:
			return super.onTouchEvent(event);
		}
		// 注意:返回值是false
		return false;
	}
	@SuppressLint({ "NewApi", "NewApi" })
	@Override
	public boolean onGenericMotionEvent(MotionEvent event) {
		// 重写的onTouchEvent回调方法
				switch (event.getAction()) {
				// 按下
				case MotionEvent.ACTION_DOWN:
					return super.onGenericMotionEvent(event);
					// 滑动
				case MotionEvent.ACTION_MOVE:
					break;
				// 离开
				case MotionEvent.ACTION_UP:
					return super.onGenericMotionEvent(event);
				}
				// 注意:返回值是false
				return false;

	}
}
二、 禁止滚动条显示
     有二种方法禁止滚动条显示:
     1、xml添加android:scrollbars="none"属性。
     2、代码实现:gridView.setVerticalScrollBarEnabled(false);
时间: 2024-08-30 05:59:18

android GridView禁止上下滑动以及禁止滚动条显示的方法。的相关文章

android 禁止ViewPager滑动

最近项目中,有个需求就是要禁止ViewPager滑动事件,我们看下360手机助手的界面,风格就类似这样的 大家如果使用过360手机助手就会发现中间内容是不可以滑动的,现在写一个demo,讲下怎么禁止ViewPager事件的滑动 布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/too

UIWebView隐藏右侧和底部滚动条,去掉滚动边界的黑色背景,禁止左右滑动

UIWebView隐藏右侧和底部滚动条,去掉滚动边界的黑色背景,禁止左右滑动, -(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error方法中实现下面的方法: for (UIView *_aView in [m_webView subviews]) { if ([_aView isKindOfClass:[UIScrollView class]]) { [(UIScrollView *)_aView set

【移动端】js禁止页面滑动与允许滑动

禁止页面滑动 通常静止滑动方案:(阻止滑动事件) window.ontouchmove=function(e){ e.preventDefault && e.preventDefault(); e.returnValue=false; e.stopPropagation && e.stopPropagation(); return false; }; 有部分机型不支持以上静止滑动方案,可使用:(点击后页面浮动到指定位置不动 将body的position设置为fixed) $

最靠谱的禁止ViewPager滑动方法

今天的工作中,遇到一个需求,就是禁止了viewpager的滑动效果.但是我的viewpager里面嵌套了scrollview.并且里面有seekbar,还有edittext,虽然我刚开始直接将viewpager的onTounchEvent返回false.但是发现表面上确实禁止了滑动.但是在scrollview这个页面可以很明显的发现,左右滑动的时候,viewpager还是会响应. 查了很多资料以后解决了问题. 方法1.如下代码: 1 // @Override 2 // public boolea

H5禁止页面滑动/滚动

禁止页面滚动--完美解决方案,滚动条显示与否,手持设备兼容与否 禁止页面滚动 有三种方法 1,依靠css 将页面 document.documentElement.style.overflow='hidden'; document.body.style.overflow='hidden';//手机版设置这个. 如果设置了如上,页面的滚动条将会消失,此时鼠标滚轮失效. 但是 你用键盘的 上下左右键,你会发现,页面仍然可以滚动. 别着急 往下看 2,在 1 的基础上 添加 js功能 var move

移动端下弹框禁止背景滑动

移动端下弹框禁止背景滑动 茴字写法有很多种,找到最适合的才是好的. 以下下方法在一屛之内是可行的 body;html 设置overflow:hidden .overflow-hidden{ height: 100%; overflow: hidden; } // 弹出时 $('html, body,.page').addClass('overflow-hidden'); // 隐藏时 $('html, body,.page').removeClass('overflow-hidden'); 问题

android 继承ListView实现滑动删除功能.

在一些用户体验较好的应用上,可以经常遇见   在ListView中  向左或向右滑动便可删除那一项列表. 具体实现  则是继承ListView实现特定功能即可. (1). 新建 delete_button.xml文件 <?xml version="1.0" encoding="utf-8"?> <Button xmlns:android="http://schemas.android.com/apk/res/android" a

android gridview画分割线

dongyangzhang android gridview画分割线,如图: 1.先上图: 2.具体实现代码: public class LineGridView extends GridView { public LineGridView(Context context) { super(context); // TODO Auto-generated constructor stub } public LineGridView(Context context, AttributeSet at

android Viewpager禁用/开启滑动切换功能

要实现viewpager的滑动以及禁止滑动切换功能只需要继承viewpager,在onTouchEvent进行逻辑判断即可(网上搜到的,确实可行,原创地址不明),下面自己实现一个 public class MyViewPager extends ViewPager { private boolean scrollble=true; public MyViewPager super(context); } public MyViewPager(Context context, AttributeS