屏幕底部的临时EditText和键盘

时间:2014-01-25 18:03:49

标签: android android-layout unity3d

我正在尝试在屏幕底部创建EditText并打开键盘(然后此EditText将使用RelativeLayout + ALIGN_PARENT_BOTTOM移动到键盘上方),它可以正常使用SetContentView,但使用addContentView,RelativeLayout + ALIGN_PARENT_BOTTOM对我不起作用键盘与EditText重叠。

在某种程度上,我想独立生成这个临时的EditText屏幕上显示的布局,所以如果我按任何布局上的任何按钮,我调用此函数在屏幕底部创建一个临时的EditText并带上键盘。

我无法更改整个主布局,因为此布局是由Unity3D生成的。我需要一种方法来生成这个EditText并独立行动,布局正在屏幕上显示。

我的代码:

public void openInput()
{
        runOnUiThread(new Runnable()
        {
                EditText inputName = new EditText(context);
                inputName.setInputType(InputType.TYPE_CLASS_TEXT);
                inputName.setFilters(new InputFilter[] { new InputFilter.LengthFilter(40)} );

                RelativeLayout.LayoutParams editTextParams = new RelativeLayout.LayoutParams(600, RelativeLayout.LayoutParams.WRAP_CONTENT);
                editTextParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
                editTextParams.addRule(RelativeLayout.CENTER_HORIZONTAL);

                RelativeLayout relativeLayout = new RelativeLayout(context);
                relativeLayout.addView(inputName, editTextParams);

                addContentView(relativeLayout, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

                inputName.requestFocus();
                InputMethodManager msg = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                msg.showSoftInput(inputName, InputMethodManager.SHOW_IMPLICIT);
        });
}

知道如何解决这个问题吗?

由于

2 个答案:

答案 0 :(得分:0)

将整个布局放在滚动视图中(作为设置内容视图)

然后当你执行addContentView时,布局将向上滚动到焦点视图,而不是向上推视图

答案 1 :(得分:0)

我正在使用弹出对话框窗口逐个编辑长参数列表。这也有助于为正在编辑的参数添加更多有用的信息,如说明,提示等......