如何检测android中的焦点EditText?

我的页面中有许多EditText和两个按钮。 我希望用户触摸任何一个EditText字段,然后单击任何按钮将特定值插入到他触摸的EditText字段中。 不允许使用键盘输入。 请帮我这样做。

Related of "如何检测android中的焦点EditText?"

您可以做的一件事是声明一个全局variablesevalue ,它将通过使用onTouchListener告诉您哪个是last selected EditText ,然后根据evalue的值,您可以通过按钮单击将文本值设置为edittext。 希望你理解。

它的代码可以如下:

 EditText e1,e2; Button b1,b2; String evalue; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); e1=(EditText)findViewById(R.id.editText1); e2=(EditText)findViewById(R.id.editText2); b1=(Button)findViewById(R.id.button1); b2=(Button)findViewById(R.id.button2); e1.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View arg0, MotionEvent arg1) { evalue="1"; return false; } }); e2.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View arg0, MotionEvent arg1) { evalue="2"; return false; } }); b1.setOnClickListener(new View.OnClickListener() { public void onClick(View arg0) { if(evalue=="1") { e1.setText("yes"); } if(evalue=="2") { e2.setText("yes"); } } }); b2.setOnClickListener(new View.OnClickListener() { public void onClick(View arg0) { if(evalue=="1") { e1.setText("No"); } if(evalue=="2") { e2.setText("No"); } } }); } 

它是一个逻辑编码..没有达到标记..如果你find一个更好的。 然后使用它。 谢谢。

您可以使用View.OnFocusChangeListener来检测是否有任何视图(edittext)获得或失去了焦点。

 for (EditText view : editList){ view.setOnFocusChangeListener(focusListener); } .... private OnFocusChangeListener focusListener = new OnFocusChangeListener() { public void onFocusChange(View v, boolean hasFocus) { if (hasFocus){ focusedView = v; } else { focusedView = null; } } } 

这包含在您的活动或片段中或您拥有EditTexts的任何位置。 ....只是说你可以把它放在课堂上的任何其他地方。 显然你需要在其中创建一个包含它们的数组,即editList

这对我有用。 它返回一个布尔值。

 myEditText.hasFocus() 

让你的Fragment实现OnTouchListenerOnFocusChangeListener

 public class AttributesFragment extends Fragment implements OnTouchListener, OnFocusChangeListener { 

然后实现使用:

 @Override public boolean onTouch(View view, MotionEvent event) { if (view instanceof EditText) { view.setOnFocusChangeListener(this); // User touched edittext } return false; } @Override public void onFocusChange(View v, boolean hasFocus) { } 

创建EditText后,不要忘记设置监听器

 editText.setOnTouchListener(this); 

这样,如果默认情况下聚焦EditText框但用户没有更改字段,则不会触发onFocusChange事件。

这对我有用。

 e1 = (EditText) findViewById(R.id.editText1); e1.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View arg0, boolean hasfocus) { if (hasfocus) { Log.e("TAG", "e1 focused") } else { Log.e("TAG", "e1 not focused") } } }); 

在您的活动或片段实现OnFocusChangeListener。

 edittextNeme= (EditText) findViewById(R.id.edittextNeme); edittextNeme.setOnFocusChangeListener(this); 

您必须通过使用view.getId()获取视图ID并相应地处理来检查哪个视图已更改焦点。

 @Override public void onFocusChange(View view, boolean hasfocus) { switch(view.getId()){ case R.id.edittextNeme: //Do something break; ...etc } }