Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过按软键打开软键盘上的关联菜单?_Java_Android_Keyboard_Android Softkeyboard - Fatal编程技术网

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>