2017-09-05 11 views
7

私はフォームの他のコントロールからの情報を自動的に入力したいと同時に、その内容を変更することを許可するeditTextを持っています。触れることができるフォーカスが合わない要素

私はこのコントロールをフォーカスできないように設定しました。そのため、actionNextを押すと次のコントロールに移動します。しかし、編集テキストをクリックすると、ユーザーがその内容を変更できるようにします。

これは私がやったことです:しかし、これは非常に不気味に動作

mNameEditText.setFocusable(false); 
     mNameEditText.setFocusableInTouchMode(false); 
     mNameEditText.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       mNameEditText.setFocusableInTouchMode(true); 
       mNameEditText.requestFocusFromTouch(); 
       mNameEditText.setFocusable(true); 
      } 
     }); 

、結果はあなたがクリックしたときに、あなたが編集できるということですが、急に次のコントロール(AutoCompleteTextViewは)もはやフォーカス可能ではありません!

enter image description here

がどのように私はこの問題を解決することができます:フォーカスがエディットテキストに残っているので、同様に、同時にautocompletetextviewに行くように実際に見えますか?

+0

"mNameEditText.requestFocusFromTouch();" 〜 "mNameEditText.requestFocus();"あなたのリスナーの中に。 – MTCZiomal

答えて

1
  • あなたのテキスト編集ビュー
  • のサブクラスは、サブクラス内のタッチ・ハンドラを上書きfalse
  • にそのenabledプロパティを設定し、あなたのビューで
  • を、それを使用してください:テキスト編集ビューをタッチしたとき今すぐビューを有効にしてフォーカスを合わせます。フォーカスが失われたら、テキスト編集ビューを再度無効にします。サブクラスのすべてを行います。
  • 適切スタイルテキスト編集ビューをユーザーが、それはあなたには、いくつかのビューをスキップするための自動フォーカスの変更をしたい場合は、あなたがnextFocus*属性の組み合わせを使用することができます
0

編集可能だという印象を持つように。

ような何か:

<EditText 
    android:id="@+id/txt1" 
    android:imeOptions="actionNext" 
    android:nextFocusForward="@+id/txt3" 
    android:nextFocusDown="@+id/txt3" 
    ... /> 

<!-- skipped view --> 
<EditText 
    android:id="@+id/txt2" 
    android:imeOptions="actionNext" 
    ... /> 

<EditText 
    android:id="@+id/txt3" 
    android:imeOptions="actionNext" 
    android:nextFocusUp="@id/txt1" 
    ... /> 

nextFocusForwardactionNextのために使用されるものです。他の属性は、非タッチモード(ハー​​ドウェアキーボードなど)で最も有用であると考えられます。

+0

これは動作しますが、私はすべてのコントロールにこれを入れなければなりません。そうでなければ、フォーム上の次の要素をクリックすると、スキップされたものに戻ります – MichelReap

+0

これは奇妙です。 、(API 21デバイス)、期待どおりに動作します。つまり、1から3までの単一のnextFocusForwardを使用すると、フォーカスサイクルは1 - > 3 - > 4 - > 5 - > 1になります。 ? – bwt

関連する問題