本文主要是介绍关于gallery点击滑动的问题(点击的item会居中),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
标签: androidAndroidgalleryGallery左对齐禁止滑动
2012-12-14 16:35 7295人阅读 收藏 举报
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
这篇关于关于gallery点击滑动的问题(点击的item会居中)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!