0

ここで完全に説明したオンキーリスナーに問題があります ENTER を押すと行番号を取得できません

テキストウォッチャーを使用して編集テキストに特定の機能を実装している場合、カーソルが次の行に移動するたびに行番号が必要になります。ENTER キーが押されたタイミングを知りたいのですが、どうすればよいですか

ここにテキストウォッチャーのコードがあります

  scene.addTextChangedListener(new TextWatcher() {          
             @Override
             public void onTextChanged(CharSequence s, int start, int before, int count) {                                   
                    //here is your code
                strcheck = s.toString().substring((s.length()-1),s.length());

                if (nowUpper)
                     strcheck = strcheck.toUpperCase();
                 else if (nowLower)
                     strcheck = strcheck.toLowerCase();

             }                       
             @Override
             public void beforeTextChanged(CharSequence s, int start, int count,
                     int after) {
                 // TODO Auto-generated method stub                          
             }                       
             @Override
             public void afterTextChanged(Editable s) {
                if (nowUpper){ 

                if(ix==1)
                 {
                    if(strcheck=="\n")
                        strcheck="a";
                        Log.v(strcheck, strcheck);
                     ix=0;
                     scene.setText(scene.getText().toString().substring(0,scene.length()-1) + strcheck);
                     scene.setSelection(scene.getText().length());


                 }
                 else
                 {
                 ix=1;
                 }
                 // TODO Auto-generated method stub                          
                }
             }
         });
4

2 に答える 2

1

このTextWatcherを試してください:

TextWatcher watcher = new TextWatcher() {
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        checkForNewLine(s, start, count, "new line entered");
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        checkForNewLine(s, start, count, "new line deleted");
    }

    @Override
    public void afterTextChanged(Editable s) {
    }

    private void checkForNewLine(CharSequence s, int start, int count, String msg) { 
        int end = start + count;
        for (int i = start; i < end; i++) {
            if (s.charAt(i) == '\n') {
                Log.d(TAG, msg);
            }
        }
    }
};
于 2013-11-02T14:12:51.160 に答える