Android 实现Gallery左对齐,选中Item不滑动效果

Android 系统自带Gallery选中Item默认是居中显示,这样有时候左边空出一大块,非常不美观,网上已有不少人解决了这个问题,比如这篇blog中提到的方法 http://blog.csdn.net/luinsist/article/details/8205638,这样有个问题是每次点击item都会滑动到最左边,如果要跳转界面的话会觉得有点迟钝,能不能让它不要滑动?下面这位仁兄给出了不要滑动到中间的方法 http://blog.csdn.net/sevensundark/article/details/7419305, 本人试验后好像效果不太好。下面说下我的解决办法,其实很简单,通过反射在onSingleTapUp方法中拿到当前的mDownTouchPosition,然后直接回调给界面,不要掉父类的onSingleTapUp方法。主要代码如下:

    public void setOnItemClickListener(IOnItemClickListener listener) {
    	mListener = listener;
    }
    @Override
	public boolean onSingleTapUp(MotionEvent e) {
    	Log.i(TAG, "onSingleTapUp----------------------");
    	try {
			Field f = AlignLeftGallery.class.getSuperclass().getDeclaredField("mDownTouchPosition");
			f.setAccessible(true);
			int position = f.getInt(this);
			Log.i(TAG, "mDownTouchPosition = " + position);
			if(null != mListener && position >= 0) {
				mListener.onItemClick(position);
			}
		} catch (SecurityException e1) {
			e1.printStackTrace();
		} catch (NoSuchFieldException e1) {
			e1.printStackTrace();
		} catch (IllegalArgumentException e2) {
			e2.printStackTrace();
		} catch (IllegalAccessException e3) {
			e3.printStackTrace();
		} 
		return false;
	}
IOnItemClickListener 是自定义的回调接口。
 
	public interface IOnItemClickListener {
		public void onItemClick(int position);
	}

在Activity 中处理点击事件。

        mGallery.setOnItemClickListener(new AlignLeftGallery.IOnItemClickListener() {
			
			@Override
			public void onItemClick(int position) {
				Toast.makeText(AlignLeftGalleryActivity.this, position + " click!", Toast.LENGTH_SHORT).show();
			}
		});
这样基本满足了需求:)

附demo下载地址:http://download.csdn.net/detail/luozhongzhu/4888103

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值