Java 如何通过按软键打开软键盘上的关联菜单?
例如,当我在虚拟键盘的“完成”软键上选择时,它应触发上下文菜单以显示选项,例如标题为“选项”的Java 如何通过按软键打开软键盘上的关联菜单?,java,android,keyboard,android-softkeyboard,Java,Android,Keyboard,Android Softkeyboard,例如,当我在虚拟键盘的“完成”软键上选择时,它应触发上下文菜单以显示选项,例如标题为“选项”的“选项1”、“选项2”、“选项3” 下面是我的xml文件的简化版本 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" android:keyWidth="10%p" android:horizontalGap="0px" android:verticalGap="0px" android:keyHeight="
“选项1”、
“选项2”、
“选项3”
下面是我的xml文件的简化版本
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
android:keyWidth="10%p"
android:horizontalGap="0px"
android:verticalGap="0px"
android:keyHeight="@dimen/key_height"
>
<Row>
<Key android:codes="1" android:keyLabel="Encrypt" android:keyEdgeFlags="left"/>
<Key android:codes="2" android:keyLabel="Translate"/>
<Key android:codes="3" android:keyLabel="Done" android:keyEdgeFlags="right"/>
</Row>
</Keyboard>
要显示关联菜单,请参见以下代码: 在活动onCreate方法中:
key.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//Creating the instance of PopupMenu
PopupMenu popup = new PopupMenu(MainActivity.this, button1);
//Inflating the Popup using xml file
popup.getMenuInflater().inflate(R.menu.popup_menu, popup.getMenu());
//registering popup with OnMenuItemClickListener
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
Toast.makeText(MainActivity.this,"You Clicked : " + item.getTitle(),Toast.LENGTH_SHORT).show();
return true;
}
});
popup.show();//showing popup menu
}
});//closing the setOnClickListener method
文件:poupup\u menu.xml
<menu xmlns:androclass="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/one"
android:title="One"/>
<item
android:id="@+id/two"
android:title="Two"/>
<item
android:id="@+id/three"
android:title="Three"/>
</menu>
您的软键盘按键在一个扩展InputMethodService并实现onKeyboardActionListener的服务中处理 在该服务中,当您处理软键盘上的按键时,添加弹出菜单代码,否则您将在应用程序的屏幕按钮上使用该代码。 像这样: 从那个里,只需添加代码来处理弹出菜单中的按钮点击,就像你们通常所做的那个样 该菜单包含用于参考的主XML文件:
< menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
< item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="never"/>
< item android:id="@+id/button1"
android:title="button1"/>
< /menu>
但是,我正在处理的类已经使用InputMethodService进行了扩展。因为我正在处理Eclipse ADT Budle提供的示例代码。我如何扩展活动?您能显示代码吗?我们不能一次扩展两个类。很抱歉,代码太长。如果我们不能同时扩展两个类,我能做什么如何解决需要扩展2个类的问题?感谢分享!我认为他无法从Marshmallow内的弹出菜单中更新或从当前输入连接中获取任何文本。出现问题,我打开了一个错误报告。你在Marshmallow中测试过吗?
< menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
< item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="never"/>
< item android:id="@+id/button1"
android:title="button1"/>
< /menu>