概要
本文介绍Activity中setDefaultKeyMode(@DefaultKeyMode int mode)方法的用法,setDefaultKeyMode(@DefaultKeyMode int mode)用于设置按键模式。
setDefaultKeyMode(@DefaultKeyMode int mode)有五种可选的按键模式分别如下:
- DEFAULT_KEYS_DIALER
- DEFAULT_KEYS_DISABLE
- DEFAULT_KEYS_SEARCH_LOCAL
- DEFAULT_KEYS_SEARCH_GLOBAL
- DEFAULT_KEYS_SHORTCUT
准备
因为现在的手机几乎都没有键盘,所以在实验setDefaultKeyMode(@DefaultKeyMode int mode)这五种模式之前我们需要调出软键盘。下面的代码可以帮助调出软键盘:
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
DEFAULT_KEYS_DISABLE
使用该模式当你点击键盘时,不会触发任何操作。
DEFAULT_KEYS_DIALER
使用该模式会打开电话拨号器如图:
图片.pngDEFAULT_KEYS_SHORTCUT
使用该模式可以使键盘按键成为菜单的快捷方式,因此你需要先构建菜单。
在Activity中重写onPrepareOptionsMenu(Menu menu)方法构建菜单,示例代码如下:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
super.onPrepareOptionsMenu(menu);
menu.clear();
menu.removeItem(0);
menu.removeItem(1);
menu.add( 0, 0, 0, "Show 0").setShortcut('0', '0').setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener(){
@Override
public boolean onMenuItemClick(MenuItem item) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this,"DEFAULT_KEYS_SHORTCUT:0",Toast.LENGTH_SHORT).show();
return true;
}});
menu.add( 0, 1, 0, "Show 1").setShortcut('1', '1').setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener(){
@Override
public boolean onMenuItemClick(MenuItem item) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this,"DEFAULT_KEYS_SHORTCUT:1",Toast.LENGTH_SHORT).show();
return true;
}});
return true;
}
上面所示代码可以构建出如下图所示菜单:
Screenshot_2017-10-15-21-04-36-680_KeyMode.png点击“Show 0”或“Show 1”会分别展示Toast。
这里有个问题需要注意下:此时我点击定义好的快捷键,即软键盘中的0和1并没有触发弹出Toast,但当我把示列Activity的父类从AppCompatActivity更换为AppCompatActivity是就成功触发了,具体原因待查。测试结果如下: Screenshot_2017-10-15-21-17-55-429_KeyMode.png
DEFAULT_KEYS_SEARCH_LOCAL
使用该模式当你点击键盘时,会调用应用内部搜索。
当然要实现内部搜索,你需要去定义内部搜索,在AndroidManifest中定义如下标签:
<meta-data-->
<!--android:name="android.app.default_searchable"-->
<!--android:value=".SearchableActivity" />
<activity android:name=".SearchableActivity">
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
searchable.xml定义了一些属性。具体可以参考https://developer.android.com/guide/topics/search/searchable-config.html SearchableActivity用来处理搜素的逻辑。我在这里只是简单的将搜索的内容通过TextView展示出来。测试如下:
图片.pngDEFAULT_KEYS_SEARCH_GLOBAL
使用该模式当你点击键盘时,会调用系统的全局搜索。如下图:
图片.png测试例子下载https://github.com/CZKgithup/KeyMode
网友评论