Android 在“编辑文本”中,如果先键入一个字符,然后键入另一个字符,则其他字符将覆盖第一个字符
我有应用程序内键盘,它在模拟器上工作得很好,但在真实设备上,当我输入一个字符,然后输入另一个字符时,其他字符会覆盖编辑文本中的第一个字符。 xml文件很简单,只需设计键盘布局 您还可以查看视频:。 在视频代码工作完美,但对于真实设备上的模拟器,它显示了问题,正如我前面提到的Android 在“编辑文本”中,如果先键入一个字符,然后键入另一个字符,则其他字符将覆盖第一个字符,android,Android,我有应用程序内键盘,它在模拟器上工作得很好,但在真实设备上,当我输入一个字符,然后输入另一个字符时,其他字符会覆盖编辑文本中的第一个字符。 xml文件很简单,只需设计键盘布局 您还可以查看视频:。 在视频代码工作完美,但对于真实设备上的模拟器,它显示了问题,正如我前面提到的 public class MyKeyboard extends LinearLayout implements View.OnClickListener, View.OnTouchListener { Mediapl
public class MyKeyboard extends LinearLayout implements View.OnClickListener, View.OnTouchListener {
Mediaplayer mp=new Mediaplayer(getContext());
CountDownTimer mTimer;
private Button button1, button2, button3, button4,
button5, button6, button7, button8,
button9, button0, buttonSpace,
button11,button12,button13,button14,button15,button16,button17,button18,button19,button20,
button21,button22,button23,button24,button25,button26,button27,button28,button29,button30,
button31,button32,button33,button34,button35,button36,button37,button38,button39,button40,
button41,button42,button43,button44,button45,button46,button47,button48,button49,button50,
button51,button52,button53,button54;
ImageButton buttonDelete,buttonEnter;
private SparseArray<String> keyValues = new SparseArray<>();
private InputConnection inputConnection;
public MyKeyboard(Context context) {
this(context, null, 0);
}
public MyKeyboard(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public MyKeyboard(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context, attrs);
}
private void init(Context context, AttributeSet attrs) {
LayoutInflater.from(context).inflate(R.layout.keyboard, this, true);
button1 = findViewById(R.id.button_1);
button1.setOnClickListener(this);
button2 = findViewById(R.id.button_2);
button2.setOnClickListener(this);
button3 = findViewById(R.id.button_3);
button3.setOnClickListener(this);
button4 = findViewById(R.id.button_4);
button4.setOnClickListener(this);
button5 = findViewById(R.id.button_5);
button5.setOnClickListener(this);
button6 = findViewById(R.id.button_6);
button6.setOnClickListener(this);
button7 = findViewById(R.id.button_7);
button7.setOnClickListener(this);
button8 = findViewById(R.id.button_8);
button8.setOnClickListener(this);
button9 = findViewById(R.id.button_9);
button9.setOnClickListener(this);
button0 = findViewById(R.id.button_0);
button0.setOnClickListener(this);
buttonDelete = findViewById(R.id.button_delete);
buttonDelete.setOnClickListener(this);
buttonDelete.setOnTouchListener(this);
buttonSpace = findViewById(R.id.button_space);
buttonSpace.setOnClickListener(this);
buttonEnter = findViewById(R.id.button_enter);
buttonEnter.setOnClickListener(this);
button11 = findViewById(R.id.button_11);
button11.setOnClickListener(this);
button12 = findViewById(R.id.button_12);
button12.setOnClickListener(this);
button13 = findViewById(R.id.button_13);
button13.setOnClickListener(this);
button14 = findViewById(R.id.button_14);
button14.setOnClickListener(this);
button15 = findViewById(R.id.button_15);
button15.setOnClickListener(this);
button16 = findViewById(R.id.button_16);
button16.setOnClickListener(this);
button17 = findViewById(R.id.button_17);
button17.setOnClickListener(this);
button18 = findViewById(R.id.button_18);
button18.setOnClickListener(this);
button19 = findViewById(R.id.button_19);
button19.setOnClickListener(this);
button20 = findViewById(R.id.button_20);
button20.setOnClickListener(this);
button21 = findViewById(R.id.button_21);
button21.setOnClickListener(this);
button22 = findViewById(R.id.button_22);
button22.setOnClickListener(this);
button23 = findViewById(R.id.button_23);
button23.setOnClickListener(this);
button24 = findViewById(R.id.button_24);
button24.setOnClickListener(this);
button25 = findViewById(R.id.button_25);
button25.setOnClickListener(this);
button26 = findViewById(R.id.button_26);
button26.setOnClickListener(this);
button27 = findViewById(R.id.button_27);
button27.setOnClickListener(this);
button28 = findViewById(R.id.button_28);
button28.setOnClickListener(this);
button29 = findViewById(R.id.button_29);
button29.setOnClickListener(this);
button30 = findViewById(R.id.button_30);
button30.setOnClickListener(this);
button31 = findViewById(R.id.button_31);
button31.setOnClickListener(this);
button32 = findViewById(R.id.button_32);
button32.setOnClickListener(this);
button33 = findViewById(R.id.button_33);
button33.setOnClickListener(this);
button34 = findViewById(R.id.button_34);
button34.setOnClickListener(this);
button35 = findViewById(R.id.button_35);
button35.setOnClickListener(this);
button36 = findViewById(R.id.button_36);
button36.setOnClickListener(this);
button37 = findViewById(R.id.button_37);
button37.setOnClickListener(this);
button38 = findViewById(R.id.button_38);
button38.setOnClickListener(this);
button39 = findViewById(R.id.button_39);
button39.setOnClickListener(this);
button40 = findViewById(R.id.button_40);
button40.setOnClickListener(this);
button41 = findViewById(R.id.button_41);
button41.setOnClickListener(this);
button42 = findViewById(R.id.button_42);
button42.setOnClickListener(this);
button43 = findViewById(R.id.button_43);
button43.setOnClickListener(this);
button44 = findViewById(R.id.button_44);
button44.setOnClickListener(this);
button45 = findViewById(R.id.button_45);
button45.setOnClickListener(this);
button46 = findViewById(R.id.button_46);
button46.setOnClickListener(this);
button47 = findViewById(R.id.button_47);
button47.setOnClickListener(this);
button48 = findViewById(R.id.button_48);
button48.setOnClickListener(this);
button49 = findViewById(R.id.button_49);
button49.setOnClickListener(this);
button50 = findViewById(R.id.button_50);
button50.setOnClickListener(this);
button51 = findViewById(R.id.button_51);
button51.setOnClickListener(this);
button52 = findViewById(R.id.button_52);
button52.setOnClickListener(this);
button53 = findViewById(R.id.button_53);
button53.setOnClickListener(this);
button54 = findViewById(R.id.button_54);
button54.setOnClickListener(this);
keyValues.put(R.id.button_1, "1");
keyValues.put(R.id.button_2, "2");
keyValues.put(R.id.button_3, "3");
keyValues.put(R.id.button_4, "4");
keyValues.put(R.id.button_5, "5");
keyValues.put(R.id.button_6, "6");
keyValues.put(R.id.button_7, "7");
keyValues.put(R.id.button_8, "8");
keyValues.put(R.id.button_9, "9");
keyValues.put(R.id.button_0, "0");
keyValues.put(R.id.button_11, "آ");
keyValues.put(R.id.button_12, "ا");
keyValues.put(R.id.button_13, "ب");
keyValues.put(R.id.button_14, "پ");
keyValues.put(R.id.button_15, "ت");
keyValues.put(R.id.button_16, "ٹ");
keyValues.put(R.id.button_17, "ث");
keyValues.put(R.id.button_18, "ج");
keyValues.put(R.id.button_19, "چ");
keyValues.put(R.id.button_20, "ح");
keyValues.put(R.id.button_21, "خ");
keyValues.put(R.id.button_22, "د");
keyValues.put(R.id.button_23, "ڈ");
keyValues.put(R.id.button_24, "ذ");
keyValues.put(R.id.button_25, "ر");
keyValues.put(R.id.button_26, "ڑ");
keyValues.put(R.id.button_27, "ز");
keyValues.put(R.id.button_28, "ژ");
keyValues.put(R.id.button_29, "س");
keyValues.put(R.id.button_30, "ش");
keyValues.put(R.id.button_31, "ص");
keyValues.put(R.id.button_32, "ض");
keyValues.put(R.id.button_33, "ط");
keyValues.put(R.id.button_34, "ظ");
keyValues.put(R.id.button_35, "ع");
keyValues.put(R.id.button_36, "غ");
keyValues.put(R.id.button_37, "ف");
keyValues.put(R.id.button_38, "ق");
keyValues.put(R.id.button_39, "ك");
keyValues.put(R.id.button_40, "گ");
keyValues.put(R.id.button_41, "ل");
keyValues.put(R.id.button_42, "م");
keyValues.put(R.id.button_43, "ن");
keyValues.put(R.id.button_44, "ں");
keyValues.put(R.id.button_45, "و");
keyValues.put(R.id.button_46, "ه");
keyValues.put(R.id.button_47, "ھ");
keyValues.put(R.id.button_48, "ء");
keyValues.put(R.id.button_49, "ي");
keyValues.put(R.id.button_51, "ی");
keyValues.put(R.id.button_50, "ے");
keyValues.put(R.id.button_52, "۔");
keyValues.put(R.id.button_53, "؟");
keyValues.put(R.id.button_54, "،");
keyValues.put(R.id.button_enter, "\n");
keyValues.put(R.id.button_space," ");
}
@Override
public void onClick(View view) {
mp.check();
mp.start();
if (inputConnection == null)
return;
if (view.getId() == R.id.button_delete) {
// CharSequence selectedText = inputConnection.getSelectedText(0);
//
// if (TextUtils.isEmpty(selectedText)) {
// inputConnection.deleteSurroundingText(1, 0);
// } else {
// inputConnection.commitText("", 1);
// }
} else {
String value = keyValues.get(view.getId());
inputConnection.commitText(value, 1);
}
}
public void setInputConnection(InputConnection ic) {
inputConnection = ic;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
deleteChar();
break;
case MotionEvent.ACTION_MOVE:
/*--- no action required ---*/
break;
case MotionEvent.ACTION_UP:
mTimer.cancel();
break;
}
return false;
}
private void deleteChar() {
mTimer = new CountDownTimer(9999999, 500) {
@Override
public void onTick(long millisUntilFinished) {
CharSequence selectedText = inputConnection.getSelectedText(0);
if (TextUtils.isEmpty(selectedText)) {
inputConnection.deleteSurroundingText(1, 0);
} else {
inputConnection.commitText("", 1);
}
}
@Override
public void onFinish() {
}
};
mTimer.start();
}
}
public class MainActivity extends AppCompatActivity {
Toolbar toolbar;
Mediaplayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar=findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle("");
EditText editText = findViewById(R.id.editText);
MyKeyboard keyboard = findViewById(R.id.keyboard);
editText.setRawInputType(InputType.TYPE_CLASS_TEXT); // uncomment to show suggestion
editText.setTextIsSelectable(true);
InputConnection ic = editText.onCreateInputConnection(new EditorInfo());
keyboard.setInputConnection(ic);
mp=new Mediaplayer(this);
//for keyboard hide above lollypop versions
editText.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
v.onTouchEvent(event);
InputMethodManager mng= (InputMethodManager) v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
if(mng !=null)
mng.hideSoftInputFromWindow(v.getWindowToken(),0);
return true;
}
});
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
mp.check();
mp.start();
Toast.makeText(this,"click",Toast.LENGTH_LONG).show();
break;
default:
return super.onOptionsItemSelected(item);
}
return true;
}
}