Android4.0以上全键盘设备的bug - 输入法不响应OK键

Android4.0以上全键盘设备的bug - 输入法不响应OK键
操作步骤:
1. 进入“设置” -> "语言和输入法
2. 在“键盘和输入法”里,按ENTER键或者DAPD_CENTER键时,输入法无响应
要求是:按ENTER键或者DAPD_CENTER键时,启用或禁用该输入法

原因:
InputMethodPreference在继承CheckBoxPreference的时候,自己定义了layout,在这个layout文件中有两个View请求了focus,导致外层的view无法响应focus.

解决方法:
Step1. 去除这些focus,让外层能够focus
Step2. 监听InputMethodPreference,如果被触发则启用/禁用该输入法

附加代码:
在增加InputMethodPreference控件的时候增加其监听
for(int i = 0; i < N; ++i){
		mKeyboardSettingsCategory.addPreference(mKeyboardMethodPreferencList.get(i));
		mKeyboardMethodPreferencList.get(i).setOnPreferenceChangeListener(new OnPreferenceChangeListener(){
			@Override
			public boolean OnPreferenceChange(Preference preference, Object newValue){
				//因为这个preference是对InputMethodPreference设置的监听,所以可以强行转换成InputMethodPreference
				((InputMethodPreference)preference).setChecked((Boolean)newValue, true);	//newValue代表是选中状态还是非选中状态;true是代表要更改这个输入法的设置到系统设置
				return false
			}
		}
	}

你可能感兴趣的:(Android4.0以上全键盘设备的bug - 输入法不响应OK键)