Ecl*_*fan 36 android android-edittext
我的页面中有许多EditTexts和两个按钮.我希望用户触摸任何一个EditText字段,然后单击任何按钮将特定值插入到EditText他触摸的那个字段中.不允许使用键盘输入.请帮我这样做.
Mr.*_*.Me 55
您可以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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这包含在您的活动或片段中或您拥有EditTexts的任何位置.该....只是说,你可以把它放在任何地方的类.显然你需要在其中创建一个包含它们的数组,因此editList.
Ank*_*dse 24
有一件事情,你能做的就是声明一个全局变量evalue它会告诉你这是last selected EditText用onTouchListener,然后根据价值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");
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
它是一个逻辑编码..没有达到标记..如果你找到一个更好的.然后使用它.谢谢.
有你的Fragment工具OnTouchListener&OnFocusChangeListener:
public class AttributesFragment extends Fragment
implements OnTouchListener, OnFocusChangeListener {
Run Code Online (Sandbox Code Playgroud)
然后实现使用:
@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) {
}
Run Code Online (Sandbox Code Playgroud)
创建你的后,不要忘记设置你的听众 EditText
editText.setOnTouchListener(this);
Run Code Online (Sandbox Code Playgroud)
这样,如果EditText默认情况下聚焦框但用户未更改字段,则不会触发onFocusChange事件.
使用 Java 8 lambdas:
EditText editTextTo = findViewById(R.id.editTextTo);
editTextTo.setOnFocusChangeListener((view, b) -> {
if (view.isFocused()) {
// Do whatever you want when the EditText is focused
// Example:
editTextFrom.setText("Focused!");
}
});
Run Code Online (Sandbox Code Playgroud)
请注意,lambda 函数内的视图实际上是 EditText 的一个实例。
这对我使用 Java 8 (lambdas) 有用:
EditText myEditText = findViewById(R.id.editText);
myEditText.setOnFocusChangeListener((view, hasFocus) -> {
if(hasFocus){
Log.e("TAG", "myEditext has focus")
}else{
Log.e("TAG", "myEditext has no focus")
}
});
Run Code Online (Sandbox Code Playgroud)
这对我有用。
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")
}
}
});
Run Code Online (Sandbox Code Playgroud)
小智 5
简单编码:
if(EditText1.isFocused()){
//EditText1 is focused
}else if(EditText2.isFocused()){
//EditText2 is focused
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
78710 次 |
| 最近记录: |