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

编辑文本单击不工作

蒋承教
2023-03-14

我正在经历一个问题。

XML编码

<EditText
   android:id="@+id/edt_txt_id"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:clickable="true"
   android:focusable="false"
   android:onClick="editTextClick" >
</EditText>

Java编码

public void editTextClick(View v) {

     if (v.getId() == R.id.edt_txt_id){

        System.out.println(" edit text click");
        EditText edtxtx =(EditText)v;
        edtxtx.requestFocus();
        edtxtx.setText("");

       }
}

我希望当我单击editText时,当前文本必须是dissapperar。但是当我单击

android:focusable="false"

单击事件工作正常,但光标不再位于编辑文本处。这意味着如果要输入一些新文本,那么即使光标不在编辑文本,如何输入新文本,如果我使用

android:focusable="true"

然后单击事件不起作用。但可用于任何新编辑。问题是什么?我知道这是个愚蠢的错误,但我不知道在哪里。提前感谢大家。

共有3个答案

毛宏达
2023-03-14

您需要为您的EditText实现setonFocus usChange监听器以实现您想要的功能。

这是焦点侦听器示例。

edtxtx.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
    if(hasFocus){
        Toast.makeText(getApplicationContext(), "got the focus", Toast.LENGTH_LONG).show();
           edtxtx.setText("");
    }else {
        Toast.makeText(getApplicationContext(), "lost the focus", Toast.LENGTH_LONG).show();
    }
   }
});
饶骁
2023-03-14

试试这条路

public void editTextClick(View v) {
        if (v.getId() == R.id.edt_txt_id) {
            System.out.println(" edit text click");
            EditText edtxtx = (EditText) v;

            edtxtx.setFocusable(true); // Add This Line And try

            edtxtx.requestFocus();
            edtxtx.setText("");

        }
    }
松鸣
2023-03-14

您好,在我看来,请为OnFocusChangeListener编写代码,您可以编写如下

final EditText edittxt = (EditText) findViewById(R.id.edittext);
    edittxt.setOnFocusChangeListener(new OnFocusChangeListener()
    {
        @Override
        public void onFocusChange(View v, boolean isFocus) 
        {
           //yours code writing and actions to take further
        }
    });

您可以检查isFocus可以是真或假,这样您就可以进一步进行,可以这样做

if (isFocus == true)
            {//some action
            } else{//another action}

另一种可能的方法是使用单击侦听器,如下所示

 editText.setOnClickListener(new OnClickListener(){
        public void onClick(View v){
            ((EditText)v).setText("");
        }
    });
 类似资料:
  • 前面多次提到过vim这个东西,它是linux中必不可少的一个工具。没有它很多工作都无法完成。早期的Unix都是使用的vi作为系统默认的编辑器的。你也许会有疑问,vi与vim有什么区别?可以这样简单理解,vim是vi的升级版。很多linux系统管理员都习惯用vi,那是因为他们接触linux的时候用的就是vi,vim后来才比较流行。所以,无所谓用vi和vim,只要你能达到你想要的目的即可。 在笔者看来

  • 有人知道一种只需单击行即可触发行编辑的方法吗? 我希望看到与单击编辑命令按钮时相同的功能,但通过选择行触发。

  • 我不想移动我的布局,其中有几个视图,所以当用户触摸编辑文本,然后键盘打开,我的布局小部件上升。我甚至在清单中使用了代码 Android:WindowsoftinPutmode=“AdjustPan”

  • 是否可以使可单击但不可编辑。 我不希望它是可编辑的(键盘也不应该出现,我们也不应该改变提示) 实际上,我只想使用编辑文本作为带有提示的图像(不能更改)。我知道实际的方法是使用一个和一个,但我希望它尝试使用,因为这样我将只使用一个视图,而不是2个。而且每件事都是动态的,所以没有XML。 对于上述需求,XML中的解决方案是android:editable=“false”,但我想在Java中使用它。 但

  • 我已经试着解决了好几个小时了,但还是没能解决。我设置了这个editText,称为活动上的布局,并将其连接到活动上的变量,当您单击字段时,它会打开可视键盘,但当您按下一个键时,它会将您带到类似浏览器的搜索屏幕,而不只是更新editText的文本。 在我的xml编辑文本是: 在我这样做的活动中 我还是找不到办法让它不发生。你能帮助我吗?

  • 我有:2个FXML文件和2个控制器。每个FXML都合并了控制器。这是打开新FXML的代码(当真正的fxml运行时,它会打开另一个) 这是打开的FXML文件的控制器 如您所见,我在所有声明的字段上添加了文本(FXML-ID已绑定!)通过initialize方法加载根之后。听起来不错,但我有一个空点异常。 为了清楚地指出事情:-我已经将fxml-id绑定到它们相应的组件。-FXML文件被正确加载(ro