編輯:關於Android編程
前沿:有時候,listview 的item要顯示的字段比較多,考慮到顯示問題,item外面不得不嵌套ScrollView來實現,於是問題來了,當listview需要做點擊事件時,由於ScrollView的嵌套使用,攔截了listvew點擊事件:只好重寫listview來實現了。
/** * * @author 作者:易皇星 * * @da2016年10月24日 時間: * * @toTODO 類描述: 解決 ListView中嵌套ScrollView,ScrollView攔截ListView的Item點擊事件的解決辦法 * * * 在listview中嵌套ScrollView,發現橫滑豎滑都正常,但是無法單擊Listview的Item。查詢Android分發機制後解決,繼承Listview重寫Listview的onInterceptTouchEvent。 * * onInterceptTouchEvent中總是調用listview的onTouchEvent保證listview的事件都執行, * super.onInterceptTouchEvent(ev)不會攔截需要傳遞給ScrollView的橫滑。 */ public class MyListView extends ListView { private int flag = 0; private float StartX; private float StartY; public MyListView(Context context) { super(context); // TODO Auto-generated constructor stub } public MyListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub } public MyListView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { // 總是調用listview的touch事件處理 onTouchEvent(ev); if (ev.getAction() == MotionEvent.ACTION_DOWN) { StartX = ev.getX(); StartY = ev.getY(); return false; } if (ev.getAction() == MotionEvent.ACTION_MOVE) { float ScollX = ev.getX() - StartX; float ScollY = ev.getY() - StartY; // 判斷是橫滑還是豎滑,豎滑的話攔截move事件和up事件(不攔截會由於listview和scrollview同時執行滑動卡頓) if (Math.abs(ScollX) < Math.abs(ScollY)) { flag = 1; return true; } return false; } if (ev.getAction() == MotionEvent.ACTION_UP) { if (flag == 1) { return true; } return false; } return super.onInterceptTouchEvent(ev); } }
以上所述是小編給大家介紹的Android ListView的item中嵌套ScrollView的解決辦法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對本站網站的支持!
Spinner控件是一個下拉列表 1.實現Spinner的系統默認設置 2.實現自定義設置: 3.使用的監聽器接口是:OnItemSelectedListener系統默認
這要從frameworks/native/cmds/servicemanager/service_manager.c:347的main函數說起,該文件編譯後生成servi
1.Android制定了一條簡單的原則:只允許UI線程(亦即主線程)修改Activity中的UI組件。當一個程序第一次啟動時,Android會同時啟動一條主線程,主線程主
Working with System PermissionsTo pr