編輯:關於Android編程
希望得到的效果是ListView不能滾動,但是最大的問題在與ListView Item還必有點擊事件,如果不需要點擊事件那就簡單了,直接設置ListView.setEnable(false);
如果還需要點擊事件,滾動與點擊都是在ListView Touch處理機制管理。
ListView點擊事件是復用ViewGroup的處理邏輯,當用戶點擊視圖並且按下與抬起手指之間移動距離很小,滿足點擊事件的時間長度限制,就會觸發點擊事件。
ListView滾動事件是自己處理,有兩個判斷條件,當用戶觸發move事件並且滑動超過touch slop距離 或者 滑動速度超過閥值都會判定為滾動事件。
import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import android.widget.ListView; public class ScrollDisabledListView extends ListView { private int mPosition; public ScrollDisabledListView(Context context) { super(context); } public ScrollDisabledListView(Context context, AttributeSet attrs) { super(context, attrs); } public ScrollDisabledListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public boolean dispatchTouchEvent(MotionEvent ev) { final int actionMasked = ev.getActionMasked() & MotionEvent.ACTION_MASK; if (actionMasked == MotionEvent.ACTION_DOWN) { // 記錄手指按下時的位置 mPosition = pointToPosition((int) ev.getX(), (int) ev.getY()); return super.dispatchTouchEvent(ev); } if (actionMasked == MotionEvent.ACTION_MOVE) { // 最關鍵的地方,忽略MOVE 事件 // ListView onTouch獲取不到MOVE事件所以不會發生滾動處理 return true; } // 手指抬起時 if (actionMasked == MotionEvent.ACTION_UP || actionMasked == MotionEvent.ACTION_CANCEL) { // 手指按下與抬起都在同一個視圖內,交給父控件處理,這是一個點擊事件 if (pointToPosition((int) ev.getX(), (int) ev.getY()) == mPosition) { super.dispatchTouchEvent(ev); } else { // 如果手指已經移出按下時的Item,說明是滾動行為,清理Item pressed狀態 setPressed(false); invalidate(); return true; } } return super.dispatchTouchEvent(ev); } }
Disable scrolling in Android ListView
轉載請注明出處:
Android 設置ListView不可滾動
http://blog.csdn.net/androiddevelop/article/details/38815493
一、字符串關鍵字變色在界面顯示的時候,偶爾需要將某些字符串中特定的字符串重點標出如下圖所示:便有了下面的方法。這個方法針對於比較 固定的字符串 ,並且需要自己 計算 需要
如何使用ES文件浏覽器的遠程管理。ES文件浏覽器是在android手機上常見的手機文件管理器,在基本的文件功能之上,它還支持開啟其他設備通過WiFi遠程連接
最近一直在學習自定義View相關的知識,今天給大家帶來的是QQ健康界面的實現。先看效果圖: 可以設置數字顏色,字體顏色,運動步數,運動排名,運動平均步數,虛線下方的藍色指
1,動畫系統配置創建游戲對象並添加Animation組件,然後將動畫文件拖入組件。進入動畫文件的Debug屬性面板選中Legacy屬性 選中游戲對象,打開Ani