我有用于阿拉伯语言的自定义键盘和用于从Sqlite数据库中快速搜索框搜索的普通英语键盘。英文键盘工作正常。但是,当弹出阿拉伯语关键字弹出窗口时,我无法键入“编辑文本” ...
我的代码:
public class MainActivity extends FragmentActivity {
CustomKeyboard mCustomKeyboard;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mCustomKeyboard = new CustomKeyboard(this, R.id.keyboardview,
R.xml.hexkbd);
View button = findViewById(R.id.btn_search_en);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
onSearchRequested();
}
});
View button1 = findViewById(R.id.btn_search_ar);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
toggleKeyboardVisibility();
}
});
}
private void toggleKeyboardVisibility() {
KeyboardView mCustomKeyboard = (KeyboardView) findViewById(R.id.keyboardview);
int visibility = mCustomKeyboard.getVisibility();
switch (visibility) {
case View.VISIBLE:
mCustomKeyboard.setVisibility(View.INVISIBLE);
break;
case View.GONE:
case View.INVISIBLE:
mCustomKeyboard.setVisibility(View.VISIBLE);
break;
}
}
@Override
public void onBackPressed() {
// NOTE Trap the back key: when the CustomKeyboard is still visible hide
// it, only when it is invisible, finish activity
if (mCustomKeyboard.isCustomKeyboardVisible())
mCustomKeyboard.hideCustomKeyboard();
else
this.finish();
}
}
您需要注册要使用键盘的每个EditText,例如:
mCustomKeyboard = new CustomKeyboard(this, R.id.keyboardview,
R.xml.hexkbd);
// register the edittext
mCustomKeyboard.registerEditText(R.id.edittext);