-2

如何禁用 listView 的 onKeyDown?我希望活动的 onKeyDown 处理 keyEvent 并且只处理 keyEvent。谢谢。

4

2 回答 2

0

如果您从 ListActivity 扩展您的列表视图,那么下面会帮助您。

onListItemClick

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    String item = (String) getListAdapter().getItem(position);
    Toast.makeText(this, item + " selected", Toast.LENGTH_LONG).show();
}

OnKeyDown:

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    super.onKeyDown(keyCode, event);
        switch(keyCode)
        {
            case KeyEvent.KEYCODE_CAMERA:
             Toast.makeText(ListViewActivity.this, "Pressed Camera Button", Toast.LENGTH_SHORT).show();
                return true;
            case KeyEvent.KEYCODE_1:
             Toast.makeText(ListViewActivity.this, "Pressed 1", Toast.LENGTH_SHORT).show();
                return true;
            case KeyEvent.KEYCODE_HOME:
             Toast.makeText(ListViewActivity.this, "Pressed Home Button", Toast.LENGTH_SHORT).show();
                return true;

            case KeyEvent.KEYCODE_BACK:
             Toast.makeText(ListViewActivity.this, "Pressed Back Button", Toast.LENGTH_SHORT).show();
                finish();
                return true;
        }

        return false;
    }
于 2011-12-20T13:48:00.323 回答
0

使用这个类

public class CustomListView extends ListView {

public CustomListView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    if ((KeyEvent.KEYCODE_DPAD_UP == event.getKeyCode() || KeyEvent.KEYCODE_DPAD_DOWN == event.getKeyCode())) {
        //handle key events here
    }
    return false;
}

}
于 2016-03-03T13:38:30.283 回答