3

3つのEdittextフィールドed1、ed2、ed3があります。ユーザーがed2/ed3をクリックすると、ダイアログが開き、そのダイアログから入力が取得されます。最初のクリックでは、カーソルが編集テキストボックスに移動し、次のクリックでは、ダイアログを開いて入力を取得できます。最初のクリックのダイアログを表示する必要があります。

4

4 に答える 4

20

EditTextをunFocusableに設定します。このようにして、最初のタッチがクリックとして登録されます。

問題のEditTextのXMLに次を追加します。

 android:focusableInTouchMode="false"
于 2012-04-20T14:32:02.843 に答える
2

代わりにボタンを使用してみませんか。ただし、その背景をデフォルトのEditTextとして設定してください。

于 2012-04-20T13:52:40.780 に答える
1

これがEditTextの動作方法です。onClickイベントをトリガーするには、最初に焦点を合わせる必要があります。

編集:バラクが指摘するように、「フォーカス可能性」を無効にして、ワンクリックで開くことができます。欠点は、EditTextで入力できないことです(これは、ユースケースでは問題ない場合があります)。

于 2012-04-20T13:51:37.287 に答える
0

タイピングを維持するためにEditText、ちょっとしたトリックをすることができます。

Dialog初めて開いてからEditText通常どおりに使用する必要がある場合は、次のように実行できます。

public class EditTextActivity extends Activity {
    EditText et1;
    int clickCount = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);

         et1 = (EditText) findViewById(R.id.main_et1);
         et1.setFocusableInTouchMode(false);
         setOnClickListeners();


    private void setOnClickListeners(){
         location.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            if (clickCount == 0){
                OpenDialog(); //Call the function to open the dialog created by you
                et1.setFocusableInTouchMode(true);
            }
            clickCount = 1;
        }
    });

}
于 2012-07-27T22:20:34.027 に答える