当前位置: 首页 > 知识库问答 >
问题:

在EditText中,单击特定文本子集时弹出一个对话框

宗政子辰
2023-03-14

找到两个解决方案-请参阅选定的答案

当用户单击EditText的某个区域时,我想弹出一个对话框。我使用onClick捕捉点击。这部分起作用:用户第一次轻触EditText时,软键盘弹出,对话框没有弹出。随后轻触会弹出键盘,然后弹出对话框(键盘消失)。

我怀疑这与EditText获得焦点有关。

这里有一个代码片段:

public class PrefixEditText extends EditText implements TextWatcher, OnClickListener
{
  public PrefixEditText (Context context)
  {
    super (context);
    html" target="_blank">setOnClickListener (this);
  }

  @Override
  public void onClick(View v)
  {
    int selStart = getSelectionStart();
    if (selStart < some_particular_pos)
      bring_up_dialog();
  }
}

重要提示:我不想完全禁用正常的EditText行为。我希望用户能够进行区域选择(用于复制

更新我发现了更多。如果EditText正在获得焦点,则会调用onFocusChange,而onClick不会。如果它已经有焦点,则调用onClick,而onFocusChange没有。

其次,可以通过调用

setInputType (InputType.TYPE_NULL);

在onFocusChange中这样做是可行的——键盘永远不会出现。在onClick中这样做(假设键盘在单击之前被隐藏)显然为时已晚-键盘出现然后消失。

下一个尝试的想法是在onTouch期间隐藏键盘。然而,我害怕弄乱这些代码——似乎我所知道的任何东西对于EditText的未来版本都是非常脆弱的。

对此有什么想法吗?

共有3个答案

曹高阳
2023-03-14

试试这个,如果它可以帮助u.first时间,编辑文本将表现为正常的编辑文本,条件是你可以根据需要显示对话框

 EditText editText;
mTim_edittext.setOnFocusChangeListener(new OnFocusChangeListener() {

      public void onFocusChange(View v, boolean hasFocus) {

     if(!hasFocus){

    //statement


 if(condition){

AlertDialog diaBox = Utils.showErrorDialogBox(  "Term in Months Cannot be 0", context);                             
diaBox.show();
              }


            }
        }
    });
柳英豪
2023-03-14

尝试通过onClick将捕获更改为onTouch

    this.editText.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                                //dialogue popup
            }
            return false;
        }
    });
宋典
2023-03-14

也许这样行得通

 EditText e = new EditText(context);
    e.setOnFocusChangeListener(new OnFocusChangeListener() {

        public void onFocusChange(View v, boolean hasFocus) {
            // TODO Auto-generated method stub
        if(hasFocus)
        {
            //dialogue popup
        }
        }
    });

或者你可以使用e.hasFocus() 然后使用e.setFocusable(false) 使其不聚焦

/////////////// 我的代码

e.setInputType(InputType.TYPE_NULL);

e.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {
        // TODO Auto-generated method stub
        AlertDialog.Builder sa = new Builder(ctx);
        sa.create().setOnDismissListener(new OnDismissListener() {

            public void onDismiss(DialogInterface dialog) {
                // TODO Auto-generated method stub
                e.setInputType(InputType.TYPE_CLASS_TEXT);
            }
        });
        sa.show();
    }
});
 类似资料:
  • 当单击时,我使用这个问题来获取。请注意,我正在将代码放在一个片段中。我改变了以下内容: 在settime.java中添加了:Context 它告诉我:构造函数没有定义。 我试着把它改成: 当试图运行应用程序时,我会遇到以下错误 appoinfragment.java settime.java

  • 我想显示datepicker弹出窗口。我找到了一些例子,但我没有得到正确的理解。我有一个edittext,我希望当我单击edittext时,datepicker对话框应该弹出,在设置日期后,日期应该以DD/MM/YYYY格式显示在edittext中。请提供给我样本代码或良好的链接。

  • 我已经有了一个DatePicker,当用户单击EditText字段时,它会弹出 出于某种原因,当我把它输入到Android Studio时,“显示对话框”被删除了。 有人能告诉我哪里出了问题吗?还是必须使用自定义的DialogFragment?

  • 我想显示日期选择器弹出窗口。我找到了一些例子,但我没有正确理解。我有一个编辑文本,我点击编辑文本,会弹出日期选择器对话框,设置日期后,日期会以dd/mm/yyyy格式以片段形式显示在编辑文本中。请提供我的样本代码或良好的链接。

  • 我想知道,在运行selenium场景时,我们是否可以做一些类似下面的事情,这需要用户的交互才能继续。比如等他上传一些图片.. > 直到该步骤,硒弹出一个对话框说:请完成某事,然后单击确定按钮继续。 当用户在网页上完成操作后,单击“确定”,则场景的事务正在向前移动。否则,停止这一步。 对于第一个子弹,我想到了下面的命令: 命令: 目标: 提前感谢!

  • 我不知道为什么youtue_title和youtube_description是空的???在我添加文本到这个编辑文本???我一直这样做为什么现在它不工作??? 有问题吗,因为它在弹出窗口中?