我正在经历一个问题。
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"
然后点击事件不起作用。但可用于任何新的编辑。什么是问题?我知道这是一个愚蠢的错误,但在哪里,我无法弄清楚。谢谢所有人。
答案 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"
删除它并尝试对我有用。