Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 輸入法截取key優先於view

Android 輸入法截取key優先於view

編輯:關於Android編程

為了驗證編寫了個例子

首先是輸入法

public class RemoteKeyboard extends InputMethodService  {

  @Override public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (processKey(event, 0 != event.getRepeatCount()))
            return true;
        return super.onKeyDown(keyCode, event);
    }

    @Override public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (processKey(event, true))
            return true;
        return super.onKeyUp(keyCode, event);
    }

    private boolean processKey(KeyEvent event, boolean doIt) {
         Log.e("======= " ," ============ processKey");
		 return false;
	}
}

其次是app view

    final TextView et1 = (TextView)findViewById(R.id.editText1);
	et1.setOnKeyListener(new OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event)
        {
        	Log.e("====================","====OnKeyListener ");
        }

運行程序打印

============================ : ============ processKey

==================== :====OnKeyListener

============================ : ============ processKey

==================== :====OnKeyListener

第一遍應該是KeyDown, 第二遍應該是 KeyUp, 說明Android 輸入法截取key優先於view


又試驗了一下改寫system/usr/keychars/Generic.kcm

把 B 改為

key B {
base: 'b' fallback DPAD_CENTER
}

在一個不可編輯框, log 如下

12-23 05:18:09.093 118 118 E ============================ : ============ processKey

12-23 05:18:09.094 118 118 E ============================ : ============ processKey
12-23 05:18:09.163 118 118 E ============================ : ============ processKey
12-23 05:18:09.163 118 118 E ============================ : ============ processKey

說明b沒有被 accept,而後又調用了 DPAD_CENTER


在一個可編輯框,b被accept, log 如下

============================ : ============ processKey

============================ : ============ processKey

說明沒有調用 fallback


如果改法如下

key B {
base: fallback DPAD_CENTER
}

在一個可編輯框也要打4行log, 說明 fallback被調用了

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved