我正在写一个用于绘制图形的计算器。我正在使用3 editTexts;第一个和第二个用于极限值,第三个用于函数。我不需要键盘,因此我将其隐藏并使用自己的按钮,但是当我在一个框中输入例如“ 11”时,它将在另一个框中显示。 我将对任何有用的建议感到满意。 a part of code
public void disableButtonClick(EditText txt) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
txt.setRawInputType(InputType.TYPE_NULL);
txt.setShowSoftInputOnFocus(false);
}
else {
txt.setRawInputType(InputType.TYPE_NULL);
txt.setTextIsSelectable(true);
}
}
editText1 = (EditText) findViewById(R.id.edittext1);
editText2 = (EditText) findViewById(R.id.edittext2);
editText = (EditText) findViewById(R.id.edittext3);
//hide soft keyboard :
disableButtonClick(editText);
disableButtonClick(editText1);
disableButtonClick(editText2);
button0.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
editText1.setText(editText1.getText()+"0");
editText2.setText(editText2.getText()+"0");
editText.setText(editText.getText()+"0");
}
});
button1.setOnClickListener(new View.OnClickListener() {
@SuppressLint("SetTextI18n")
@Override
public void onClick(View v) {
editText1.setText(editText1.getText()+"1");
editText2.setText(editText2.getText()+"1");
editText.setText(editText.getText()+"1");
}
});
答案 0 :(得分:1)
通常,对于您创建的任何EditText
,addTextChangedListener都会监听对EditText
内容的更新/更改。简单来说,您可以使用addTextChangedListener
来检测是否对EditText中的文本进行了任何更改。
以下是您可能遇到的问题的解决方案:聆听 edittext1
上的更改,只需将更新后的文本设置为 edittext2
和 edittext3 。用技术术语来说,这意味着将addTextChangedListener
设置为 edittext1
,然后更新 edittext2
和 edittext3
随时更改 edittext1
中的文本。这是实现:
editText1.addTextChangedListener(new TextWatcher() {
boolean considerChange = false;
@Override
public void onTextChanged(CharSequence s, int start, int before, int count){
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
if (considerChange){
editText2.setText(editText1.getText().toString());
editText.setText(editText1.getText().toString());
}
considerChange = !considerChange; // flip the boolean
}
});
PS:我添加了布尔值
considerChange
,因为每种方法addTextChangedListener
中的内容是递归的。
我希望这会有所帮助。快活的编码!
答案 1 :(得分:0)
尝试
button0.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
editText1.setText("write everything");
}
});
editText1.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
editText2.setText(editText1.getText() + "");
editText.setText(editText1.getText() + "");
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
添加导入
import android.text.Editable;
import android.text.TextWatcher;