如果用户专注于Edittext,我该怎么办?菜单应该显示?

时间:2012-10-27 09:26:58

标签: android menu android-edittext android-softkeyboard android-keypad

我已经提到了this link

我的需求:如果我点击或关注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>

1 个答案:

答案 0 :(得分: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();
                    }
                }
            });