簡介: 我目前正在嘗試爲我的填字遊戲實現EditText
的輸入法,其中用戶在EditText
中看到類似"____"
的東西。下劃線標記缺少字母,輸入的第一個字符將填充第一個下劃線。 當然謎題中的其他單元格可能已經解決了,因此EditText
文本可能是"ST_CKOV_RF_OW"
。我已經在我自己的輸入視圖中擁有所有這些功能,這是覆蓋了onDraw()
的一個子視圖。這工作得很好,除了視圖不會出現在一些較低的Android版本上,並且Back鍵滑過我的輸入例程並且無法訪問。Android TextWatcher在輸入時替換下劃線
所以我想我會這樣做EditText
,實施TextWatcher
,並罰款,但我不能讓它正常工作。我現在正在工作,我可以使用鍵盤輸入字母,但Backspace也不起作用,當然如果用戶觸摸到EditText
,位置會變得混亂。
public void beforeTextChanged(CharSequence s,int start,int count, int after){
et.removeTextChangedListener(textWatcher);
int position = text.indexOf("_");
if(position==-1) onAnswerEntered(et.getText().toString().replace("_", "")); //finished
else {
et.setSelection(et.getText().toString().indexOf("_"));
et.addTextChangedListener(textWatcher);
}
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
et.removeTextChangedListener(textWatcher);
try {
String currentKey = s.toString().substring(start, start+1);
Logger.log("Current Key", currentKey);
int position = text.indexOf("_");
Logger.log("Current Position _ ", position+"");
//replace _ with key
String sbefore=text.substring(0, position);
String safter=text.substring(position+1, text.length());
text=sbefore+currentKey+safter;
int positionNext = text.indexOf("_");
Logger.log("Next Position _ ", positionNext+"");
if(positionNext==-1) onAnswerEntered(et.getText().toString().replace("_","")); //finished
else {
et.setText(text);
et.setSelection(et.getText().toString().indexOf("_"));
et.addTextChangedListener(textWatcher);
}
} catch(IndexOutOfBoundsException ioobe) {
ioobe.printStackTrace();
}
}
我也試着設置OnKeyListener
,但它不會在EditText
工作(我可以退格事件,沒有別的)
所以也許我是完全錯誤的軌道上,但請大家幫忙我給我一個線索,告訴我如何才能完成我的目標。謝謝。