-2

AndroidのTextWatcherで型付き文字を「a」文字に置き換えたいのですが、実際の型付き文字も変数内に保存します。これを行うには、 afterTextChanged で、次のコードを記述して文字を置き換えます。

if(s.toString().charAt(s.length()-1) != 'a'){                               
 txtfreak.setText(s.toString().substring(0, s.length()-1) + "a"); 
 txtfreak.setSelection(txtfreak.getText().length());
}

置換する前に、実際に入力された文字を保存し、これを行うには、 beforeTextChanged に次のコードを記述します。

freaktext=s.toString();

しかし、idは機能せず、フリークテキストにはafterTextChangedで行った変更が含まれています!! 私の質問は、beforeTextChanged が afterTextChanged より前に実行されるということですか? 私のコードではそうではないようです!!

4

2 に答える 2

1

あなたが望むものを達成するために a を使用する別の方法がありTextWatcher、それはあなたの状況でうまくいくかもしれません。以下の方法では、すべての文字の代わりに「a」を表示し、EditTextフィールド内の元のテキストにアクセスできます。

の代わりにうまくいくことを願っていますTextWatcher

警告: 以下の方法で目的が果たされない場合は、開始した時点で確かに可能TextWatcherですが、バグを修正した後でも、さらに先に進む必要があります。スパンの最初または途中から、またはクリップボードからの貼り付けを含む、可能な限りの方法でテキストを編集するユーザーを手動で処理する必要があります。


android:inputType="textPassword"(すべてのテキストをドット "."に変更する) と実装PasswordTransformationMethod(デフォルトのドットを 'a' に変更する)の組み合わせが必要です。

freaktext次のように変数を設定します。

freaktext.setTransformationMethod(new MyPasswordTransformationMethod());

完全な例については、@Eric に感謝するこのリンクにアクセスする必要があります。

于 2013-03-27T14:51:56.533 に答える
1
if(s.toString().charAt(s.length()-1) != 'a'){
freaktext=txtfreak.getText().toString();                               
 txtfreak.setText(s.toString().substring(0, s.length()-1) + "a"); 
 txtfreak.setSelection(txtfreak.getText().length());
}
于 2013-03-27T17:57:12.560 に答える