私がやりたいのは、EditText の状態 (実際には背景) を変更して、その内容の有効性を反映することです。たとえば、ユーザーが 999 を入力した場合、999 は文脈上無効であり、EditText にはデフォルトのオレンジ色の境界線の代わりに赤い境界線が必要です。同様に、テキストが有効になると、緑色の境界線が必要になります。
私が調査した方法:
- editText のスタイルを、editor.setStyle(R.styles.SomeID) などを介してプログラムで変更します。Androidでは不可能のようです。
- カスタム状態 (state_valid、state_invalid) を R.attr に追加し、それらを赤/緑の 9 パッチに関連付けてから、これらの状態の 1 つで drawable.setState() を呼び出します。これは、getState() を介して状態を読み戻すことができるという意味で機能しましたが、境界線の色は変わりませんでした。
- 有効 (無効) の検出時にバックグラウンド リソースを直接設定します。これは問題なく動作し、正しい視覚効果が得られますが、少しばかげているように見え、許可される状態は 1 つだけです (たとえば、EditText が押されているかどうか、有効になっているかどうかを手動で確認する必要があります)。
限られたUIの不動産を考えると、テキストの有効性をユーザーに視覚的にフィードバックするために別のUI要素を導入することをためらっています。したがって、EditText自体に表示したいのです。
それで..これは実現可能なものですか?これはかなり一般的な使用例のようですが、私がやろうとしていることを簡単かつエレガントな方法で達成した人はいますか?