Android长按事件及上下文菜单

来源:互联网 发布:淘宝化妆品名称大全 编辑:程序博客网 时间:2024/05/02 01:20

1、View.OnLongClickListener和View.OnCreateContextMenuListener均由长按视图触发。如果要长按直接触发一个事件用前者;若长按触发多个可供选择的事件,用后者。

findViewById(R.id.btn).setOnLongClickListener(new OnLongClickListener() {@Overridepublic boolean onLongClick(View v) {//返回true,onCreateContextMenu将不会被触发return true;}});findViewById(R.id.btn).setOnCreateContextMenuListener(new OnCreateContextMenuListener() {@Overridepublic void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {//每次长按View会触发该方法然后弹出上下文菜单,onLongClick一块被触发menu.setHeaderTitle("haha");menu.add(0, 0, 0, "good").setOnMenuItemClickListener(mOnMenuItemClickListener);menu.add(0, 1, 0, "better").setOnMenuItemClickListener(mOnMenuItemClickListener);menu.add(0, 2, 0, "worse").setOnMenuItemClickListener(mOnMenuItemClickListener);}});

//为上下文菜单每一项注册该监听器private OnMenuItemClickListener mOnMenuItemClickListener = new OnMenuItemClickListener() {@Overridepublic boolean onMenuItemClick(MenuItem item) {switch (item.getItemId()) {case 0:Log.d(TAG, "00");break;case 1:Log.d(TAG, "11");break;case 2:Log.d(TAG, "22");break;default:break;}return false;}};
2、ListView的几个监听事件
mListView.setOnScrollListener(new OnScrollListener() {@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {Log.w(TAG, "onScrollStateChanged-"+scrollState);}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {Log.w(TAG, "onScroll-"+firstVisibleItem+"-"+visibleItemCount+"-"+totalItemCount);}});mListView.setOnSystemUiVisibilityChangeListener(new OnSystemUiVisibilityChangeListener() {@Overridepublic void onSystemUiVisibilityChange(int visibility) {Log.w(TAG, "onSystemUiVisibilityChange-"+visibility);}});
ListView的onClick已被禁掉
mListView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {Log.d(TAG, "mListView.setOnItemClickListener");}});mListView.setOnItemLongClickListener(new OnItemLongClickListener() {@Overridepublic boolean onItemLongClick(AdapterView<?> parent, View view,int position, long id) {return true;}});

0 0