關於gallery點擊滑動的問題(點擊的item會居中)

 

Android 實現Gallery左對齊,選中Item不滑動效果

標籤: androidAndroidgalleryGallery左對齊禁止滑動
 7295人閱讀 評論(4) 收藏 舉報
 分類:

Android 系統自帶Gallery選中Item默認是居中顯示,這樣有時候左邊空出一大塊,非常不美觀,網上已有不少人解決了這個問題,比如這篇blog中提到的方法 http://blog.csdn.NET/luinsist/article/details/8205638,這樣有個問題是每次點擊item都會滑動到最左邊,如果要跳轉界面的話會覺得有點遲鈍,能不能讓它不要滑動?下面這位仁兄給出了不要滑動到中間的方法 http://blog.csdn.Net/sevensundark/article/details/7419305, 本人試驗後好像效果不太好。下面說下我的解決辦法,其實很簡單,通過反射在onSingleTapUp方法中拿到當前的mDownTouchPosition,然後直接回調給界面,不要掉父類的onSingleTapUp方法。主要代碼如下:

[java] view plain copy
  1.    public void setOnItemClickListener(IOnItemClickListener listener) {  
  2.     mListener = listener;  
  3.    }  
  4.    @Override  
  5. public boolean onSingleTapUp(MotionEvent e) {  
  6.     Log.i(TAG, "onSingleTapUp----------------------");  
  7.     try {  
  8.         Field f = AlignLeftGallery.class.getSuperclass().getDeclaredField("mDownTouchPosition");  
  9.         f.setAccessible(true);  
  10.         int position = f.getInt(this);  
  11.         Log.i(TAG, "mDownTouchPosition = " + position);  
  12.         if(null != mListener && position >= 0) {  
  13.             mListener.onItemClick(position);  
  14.         }  
  15.     } catch (SecurityException e1) {  
  16.         e1.printStackTrace();  
  17.     } catch (NoSuchFieldException e1) {  
  18.         e1.printStackTrace();  
  19.     } catch (IllegalArgumentException e2) {  
  20.         e2.printStackTrace();  
  21.     } catch (IllegalAccessException e3) {  
  22.         e3.printStackTrace();  
  23.     }   
  24.     return false;  
  25. }  
[java] view plain copy
  1. IOnItemClickListener 是自定義的回調接口。  
[java] view plain copy
  1.   
[java] view plain copy
  1.   
[java] view plain copy
  1. public interface IOnItemClickListener {  
  2.     public void onItemClick(int position);  
  3. }  

在Activity 中處理點擊事件。

[java] view plain copy
  1.      mGallery.setOnItemClickListener(new AlignLeftGallery.IOnItemClickListener() {  
  2.   
  3. @Override  
  4. public void onItemClick(int position) {  
  5.     Toast.makeText(AlignLeftGalleryActivity.this, position + " click!", Toast.LENGTH_SHORT).show();  
  6. }  
  7. );  
這樣基本滿足了需求:)

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章