オンタッチTextView
に変換する がありEditView
ます。ただし、ユーザーが の外側の任意の場所に触れたときに、逆のことが発生するようにしたいと考えていますEditView
。を使用しようとしましたsetOnFocusChangeListener
が、他の何かがフォーカスされたときにのみ機能するようです。そこで傍受onTouch
して確認できることはわかっていますが、このシナリオを処理する簡単な方法はありますか?
2 に答える
私も自分のプロジェクトでこれを使用し、次のように解決しました:
EditText の外側のレイアウトを「focusable=true」および「clickable=true」に設定します。EditText には背景がないため、TextView のように見えます。フォーカスの変更時に、EditText のテキストの色を変更して、ユーザーが自分を見ることができるようにします。テキストを編集できます。次に、外側のレイアウトにはOnClickListenerがあり、クリックするとソフトウェアキーボードが非表示になり、テキストの色がTextViewの色に戻ります。これはすべて、要素を切り替えることなく機能しています。必要に応じて、両方の要素を FrameLayout に配置して、要素がレイアウト内で同じ位置にあることを確認し、TextView に OnClickListener を実装し、onClick イベントでオブジェクトの可視性を切り替えることができます。
多分このアイデアはあなたを助ける;)
TextView
編集ビューの親をフォーカス可能に設定します。
すべてのレイアウトとビューをクリック可能にし、それぞれに onClickListener を実装し、以下のように onClickListener を記述します。
private ClickListener implements OnClickListener
{
public void onClick(View view)
{
if(v.getId()!=R.id.editView)
{
//Write your code here to replace views
}
}
}