0

我已经提到了这个链接

我的需求:如果我点击或关注EditText,它应该调用Menus。在菜单中,我想创建两个选项。即普通书写和键盘书写。

如果用户选择键盘书写,它看起来像 Android 键盘。应该可以从键盘输入。下一个,正常写作。这很正常。

在菜单中,如果用户选择正常书写,则单击时应出现一个屏幕,如 MS-Paint 应用程序。使用铅笔,用户应该能够像我们几乎在绘画应用程序中一样书写。

我是 Android 新手,但正在学习!

在我的代码中,我应该在哪里执行菜单的所有功能?

我怎么能这样做?非常感谢任何帮助或建议!

这是我的代码:

else if(q.trim().equals("A"))
    {
fillUp=new EditText(context);
fillUp.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
     }
});
fillUp.setBackgroundResource(R.drawable.option);
fillUp.setId(9);
fillUp.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
public void onCreateContextMenu(ContextMenu arg0, View arg1,ContextMenuInfo arg2) {
}
});
fillUp.setOnFocusChangeListener(new View.OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
Toast.makeText(context, "Focused", Toast.LENGTH_LONG).show();
if (hasFocus) {
context.getWindow();
context.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
                }
            }
        });
 Rl=new RelativeLayout.LayoutParams(weigth/4,height/15); 
        Rl.addRule(RelativeLayout.BELOW,1);
        Rl.addRule(RelativeLayout.CENTER_HORIZONTAL,1); 
        fillUp.setLayoutParams(Rl);
        fillUp.setGravity(Gravity.CENTER); 
        fillUp.setId(9);
        compLayout.addView(fillUp);

我的 XML 代码:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/icon"
 android:icon="@drawable/keyboard" />
<item android:id="@+id/text"
android:title="Text" />
<item android:id="@+id/icontext"
android:title="Icon and text"
android:icon="@drawable/writing" />
</menu>
4

1 回答 1

0

要阻止虚拟键盘的出现,您可以使用 .setInputType(InputType.TYPE_NULL)。要显示菜单 MainActivity.this.openOptionsMenu(),如下所示:

EditText editText = (EditText) findViewById(R.id.a);
                //block kayboard
            editText.setInputType(InputType.TYPE_NULL);
            editText.setOnFocusChangeListener(new OnFocusChangeListener() {

@Override
                public void onFocusChange(View v, boolean hasFocus) {
                    if (hasFocus == true) {
                                        //show menu
                        MainActivity.this.openOptionsMenu();
                    } else {
                        MainActivity.this.closeOptionsMenu();
                    }
                }
            });
于 2013-03-07T09:24:48.400 回答