我有一個編輯文本,我想知道如果光標已經移動到下一行或者沒有移動到下一行我想調用一個新的功能。我怎樣才能做到這一點? 有沒有一種方法或功能,我可以知道光標已移動到下一行?我們如何知道光標已經移動到edittext的下一行android
PS:我使用的是文本的專家以實現大寫和小寫的功能
scene.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int i, int j, int k) {
if(flag!=0)
{
flag=1;
strcheck = s.toString().charAt(s.length()-1);
int line = getCurrentCursorLine(scene);
lineno = line;
if(strcheck=='\n' && ib1==true){
ib22(scene, lineno);
} else if(strcheck=='\n' && ib2==true){
ib22(scene, lineno);
} else if(strcheck=='\n' && ib3==true){
ib55(scene, lineno);
} else if(strcheck=='\n' && ib4==true){
ib55(scene, lineno);
} else if(strcheck=='\n' && ib5==true){
ib33(scene, lineno);
} else if(strcheck=='\n' && ib6==true){
ib11(scene, lineno);
} else if(strcheck=='\n' && ib7==true){
ib22(scene, lineno);
} else if(strcheck=='\n' && ib1==false && ib2==false && ib3==false && ib4==false && ib5==false && ib6==false && ib7==false){
ib22(scene, lineno);
}
//int start = scene.getLayout().getLineStart(lineno);
//int end = scene.getLayout().getLineEnd(lineno);
//String previous = (start<1 && lineno==0)?"":scene.getText().toString().substring(0, start);
if (nowUpper){
flag = 0;
strcheck = Character.toUpperCase(strcheck);
scene.setText(scene.getText().toString().substring(0,scene.length()-1) + strcheck);
//scene.setText(previous + scene.getText().toString().substring(start, end).toUpperCase());
scene.setSelection(scene.getText().length());
}
else if (nowLower){
strcheck = Character.toLowerCase(strcheck);
}
}
else{
flag=1;
}
}
public void afterTextChanged(Editable editable) {
}
public void beforeTextChanged(CharSequence cs, int i, int j, int k) {
}
});
我已經使用了一個textwatcher。看到我剛剛添加的代碼,我現在如何檢測行更改? –
你不能,TextWatcher不會通知about.selection更改,請改用SpanWatcher – pskink