Android 编辑文本单击不工作
我正在经历一个问题 XML编码Android 编辑文本单击不工作,android,click,android-edittext,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
<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>
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("");
}
}
我想,当我点击编辑文本,然后当前的文本必须是disapperar。但是当我点击
android:focusable="false"
单击事件工作正常,但光标不再位于编辑文本处。这意味着,如果要输入一些新文本,那么即使光标不在编辑文本,如何输入这些新文本,如果我使用
android:focusable="true"
然后单击事件不起作用。但可用于任何新编辑。有什么问题?我知道这是一个愚蠢的错误,但我不知道在哪里。提前谢谢大家。您需要设置文本 更改
edtxtx.getText(“”)代码>到
edtxtx.setText("");
这样试试
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("");
}
}
试试这个
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)代码>以便它可以再次执行单击事件。而不是在xml中设置android:focusable=“false”
。。。在onCreate()
上的代码中写入此代码:
您好,在我看来,请为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
}
});
editText.setOnClickListener(new OnClickListener(){
public void onClick(View v){
((EditText)v).setText("");
}
});
您可以检查isFocus,它可以是真的,也可以是假的,这样您就可以进一步进行,通过这种方式可以完成
if (isFocus == true)
{//some action
} else{//another action}
另一种可能的方法是使用click listener,如下所示
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
}
});
editText.setOnClickListener(new OnClickListener(){
public void onClick(View v){
((EditText)v).setText("");
}
});
您需要为EditText
实现setonFocusChange
侦听器,以实现所需的功能
下面是焦点侦听器示例
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();
}
}
});
只需将此属性添加到您的编辑文本中即可:
android:focusableInTouchMode="false"
我知道这个问题很久以前就被问到了,我想我的回答会帮助别人。我面临着同样的问题,editText不关注点击
我的EditText的父布局有下面的代码,它阻止了键盘
android:descendantFocusability="blocksDescendants"
删除此项并尝试对我有效。很抱歉,它是setText(“”),这是我的打字错误。但这不是我的主要问题。如果您能帮助我解决我的主要问题,我将非常高兴。我想这是我第一次看到有人为EditText实现了onClick Listener。顺便问一下,你想做什么?你应该使用你的建议,这是值得赞赏的,但我不能改变我的编码方式,因为它有很长的理由,请给我建议以上的代码上下文你想实现一种提示功能吗?实际上这是为自定义BaseApter。在我的主活动中单击事件,在我的应用程序中,它在自定义对话框中包含许多单击事件,所以我在我的主活动的单个方法中定义了所有这些。我正在经历这个问题,从过去的两天,最后我张贴这个线程。请帮我解决这个问题。如果没有android:focusable=“…”,程序执行不会进入if{}块。@DilAka检查我的答案。谢谢你的建议,但我告诉过你我不能用你的方式处理它,我使用的是自定义BaseAdater,我声明它是setter-getter。单击mainActivity中的事件。如果我按照您的建议使用,我将得到NullPointer异常,因为edt_xtx未在我的mainActivity中声明。