これはかなり単純な概念だと思いますが、インターネットで答えを見つけることができませんでした。
TextWatcher を使用して EditText 内の入力をフォーマットするメイン アクティビティを作成しました。
public class MainActivity extends Activity implements TextWatcher {
EditText text;
int textCount;
String numba1, numba, n;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text = (EditText)findViewById(R.id.editText1);
text.addTextChangedListener(this);
}
/* TextWatcher Implementation Methods */
public void beforeTextChanged(CharSequence s, int arg1, int arg2, int after) {
// Does Nothing
}
public void onTextChanged(CharSequence s, int start, int before, int end) {
//Does random stuff with text
}
public void afterTextChanged(Editable s) {
//Does much more random stuff with text
}
protected void onResume() {
super.onResume();
SharedPreferences prefs = getPreferences(0);
String restoredText = prefs.getString("text", null);
if (restoredText != null) {
text.setText(restoredText, TextView.BufferType.EDITABLE);
int selectionStart = prefs.getInt("selection-start", -1);
int selectionEnd = prefs.getInt("selection-end", -1);
if (selectionStart != -1 && selectionEnd != -1) {
text.setSelection(selectionStart, selectionEnd);
}
}
}
protected void onPause() {
super.onPause();
SharedPreferences.Editor editor = getPreferences(0).edit();
editor.putString("text", text.getText().toString());
editor.putInt("selection-start", text.getSelectionStart());
editor.putInt("selection-end", text.getSelectionEnd());
editor.commit();
}
次に、これを自分のプロジェクトで何度か再利用したいので、カスタムの EditText コントロールを作成します。これは元のコントロールと同じように見えますが、すべての書式設定を行い、設定を保存します。
理想的には、カスタム EditText を表示するために xml を使用するだけで済みます。
<view
class="com.android.example.myEditText"
id="@+id/editText" />
Android のカスタム コンポーネントチュートリアルを読んだことがありますが、コンポーネントの動作ではなく、コンポーネントの外観の変更について主に説明しているため、キャンバスの使用には消極的です。
それで、どうすればこれを達成できますか?