編集テキストをreadOnlyまたは編集可能に設定することに関して多くの質問がありましたが、すべてが特定のシナリオでのみ機能します。 私は次の機能が必要です:編集テキストを読み取り専用に設定して編集可能に戻す
編集可能なEdittextウィジェットは、プログラムでは読み取り専用に設定する必要があります。読み込み専用の場合、データを入力することはできませんが、現在のコンテンツは選択してコピーする必要があります。同じフィールドは以前と同じ状態に編集可能に戻す必要があります。そのため、入力を許可し、コピー/貼り付けのテキストを選択します。
これは私の現在のコードです:
if (readOnly)
{
_text.setTextColor(Color.GRAY);
_keyListener = _text.getKeyListener();
_text.setKeyListener(null);
}
else
{
_text.setTextColor(_foreground);
if (_keyListener != null)
{
_text.setKeyListener(_keyListener);
}
_text.setFocusable(true);
}
は、私はすでに、次の方法を試してみました:読み取り専用部分で
- コール
setTextIsSelectable()
。これにより、readonlyフィールドのテキストを選択することができます。しかし、編集可能に戻すと、フィールドは選択可能なままです。 - 読み取り専用の場合はinputtypeをnullに設定し、以前の状態に戻して編集可能に設定します。これで、フィールドを編集可能に戻した後でフィールドを編集することはできません。
私は何らかのリスナーやプロパティを設定するのを忘れたと思います。たぶんあなたの誰かがそれを知っているかもしれません。
編集: Disabling of EditText in android しかし、それだけで限り、私は読み取り専用テキスト選択をするためにsetTextIsSelectable()
を使用しませんように動作します は、次のことをしようとしました。この値を設定して編集可能に戻した場合、フィールドは選択可能ですが編集可能ではありません。
おかげ
役立つ可能性が重複している
boolean disabled
希望を定義することを忘れないでください使用アンドロイドでEditTextを無効にする(https://stackoverflow.com/questions/4297763/disabling-of-edittext-in-android) –
残念ながら、私の編集を参照してください。 – Roman
他に何も動いていなければ、2つの異なるウィジェットを試して、関連するものだけを表示することができます。編集可能な状態でTextViewを表示し、編集可能な状態ではEditTextを表示し、TextWatchersを使用して隠れている間にTextWatchersを同期させます。 – cwbowron