EditText单击无法正常工作

时间:2014-02-07 05:38:22

标签: android click android-edittext

我正在经历一个问题。

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时,当前的文字必须是消失的。但是当我点击

android:focusable="false"

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

android:focusable="true"

然后点击事件不起作用。但可用于任何新的编辑。什么是问题?我知道这是一个愚蠢的错误,但在哪里,我无法弄清楚。谢谢所有人。

8 个答案:

答案 0 :(得分:2)

您好我个人认为请为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,它可以是true或false,这样你可以继续进行,这可以通过这种方式进行。

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

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

 editText.setOnClickListener(new OnClickListener(){
        public void onClick(View v){
            ((EditText)v).setText("");
        }
    });

答案 1 :(得分:1)

试试这种方式

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("");

        }
    }

答案 2 :(得分:1)

您需要为setonFocusChange实现EditText侦听器,以实现所需的功能。

这是焦点听众的例子。

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();
    }
   }
});

答案 3 :(得分:0)

您需要设置文字

edtxtx.getText("");更改为

edtxtx.setText("");

答案 4 :(得分:0)

试试这个

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);
        edtxtx.setText("");

     }}

此后再次setFocusable(false);以便再次点击事件。

答案 5 :(得分:0)

而不是在xml中设置android:focusable="false" ...在onCreate()上的代码中写下这个:

    if (EditText.hasFocus()) {
        EditText.clearFocus();
   }

答案 6 :(得分:0)

只需在您的Edittext中添加此属性:

android:focusableInTouchMode="false"

答案 7 :(得分:0)

我知道很久以前就问过这个问题,以为我的回答会对某人有所帮助。我遇到了editText不专注于点击的同样问题。

我在EditText的父布局中有以下代码,该代码阻止了键盘。

android:descendantFocusability="blocksDescendants"

删除它并尝试对我有用。