提示输入文字

时间:2011-04-04 14:38:32

标签: android

我的应用程序中有一个项目,单击它,它会弹出一个带有文本框和按钮的警告对话框。它有点笨重,文本框没有聚焦,因此您必须单击它才能调出键盘。有没有更好的方法来提示输入文字?

3 个答案:

答案 0 :(得分:1)

如果您需要让它始终打开,您可以使用

  dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);

然后使用editText.requestFocus将文本放入那里。

或者在EditText布局上使用android:inputMethod并添加“alwaysVisible”标志。

答案 1 :(得分:0)

您可以在AlertDialog上的EditText上创建焦点侦听器,然后获取AlertDialog的窗口。从那里你可以通过调用setSoftInputMode来制作软键盘。

final AlertDialog dialog = ...;

editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus) {
            dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
        }
    }
});

答案 2 :(得分:0)

AlertDialog.Builder builder = new AlertDialog.Builder(tab3.this);
                    builder.setTitle(params[4]);
                    final EditText et = new EditText(tab3.this);
                    et.setText(params[5]);  

                    builder.setView(et);
                    builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            params[5] = et.getText().toString();
                            ViewGroup vg = (ViewGroup) arg1;
                            TextView txv = (TextView)vg.findViewById(R.id.datetext_view2);
                            txv.setText(params[5]); 
                            form_adapter.datas.put(ckey, params);
                            save(GlobalVars.current_id,form_adapter.datas);

                        } 
                    });

                 final AlertDialog alert = builder.create();
                 et.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                        @Override
                        public void onFocusChange(View v, boolean hasFocus) {
                            if (hasFocus) {
                                alert.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
                            }
                        }
                    }); 
                 alert.show();