質問

私はEditTextことを示して時間を持っています。私は私のEditTextTimePickerDialogを設定するように、ユーザーの後、私はView.OnClickListenerを表示したいEditTextをクリックします。

しかしOnClickListenerが変なふうに動作している - 私はEditTextに触れた後、(私はしたくない)ソフトウェアキーボードが表示されます。私はもう一度タッチすると、OnClickListener.onClick()が最終的に呼び出され、ダイアログが表示されます。

私は何をすべき私はダイアログがすぐに表示させたい場合は?

役に立ちましたか?

解決

システムは「タッチモード」である一方、

は他のほとんどのコントロールとは異なり、EditTextsはフォーカス可能です。第2のクリックイベントが実際OnClickListenerを発射しながら、最初のクリックイベントは、コントロールを焦点を当てています。あなたはandroid:focusableInTouchModeビューの属性を持つ無効にタッチモードフォーカス、OnClickListenerが期待通りに発射する必要がある場合。

<EditText
        android:text="@+id/EditText01"
        android:id="@+id/EditText01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:focusableInTouchMode="false" />

他のヒント

別の解決策は、ontouchlistenerを使用することです。

edittext.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if(MotionEvent.ACTION_UP == event.getAction()) {
            mQuaternion_1.setText("" + mQ1);
        }

        return true; // return is important...
    }
});
それが返された場合は、

trueイベントが処理され、キーボード文句を言わないのポップアップされます。それでもポップアップにキーボードをしたいし、登録したい場合は、それがfalseを返さなければならないと思いクリックします。

あなたは、ユーザーが実際のEditTextに入力することができるようにしたくないように

これが鳴ります。あなたは彼らが時間ピッカーを経由して時間を選択できるようにしたいです。なぜないTimePickerDialogをポップアップするだけでボタン?あなたはTextViewの中で選ばれた時間を表示することができます。

それとも、ただA TimePickerでのEditTextビューを置き換えることができますのビュー(ないダイアログ、普通のビュー)。

私はこのようなカスタマイズされたボタンを使用してこれを解決します:

<Button
        android:id="@+id/btTime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:text="test"
        android:textSize="20dp"
        android:background="@android:drawable/edit_text" />
代わりにタッチリスナーの使用テキスト変更リスナーの

editText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            //yourFunction();
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });

私が正しく理解していればあなただけのようなものが必要

<EditText android:text="@+id/EditText01" android:id="@+id/EditText01"
    android:layout_width="wrap_content" android:layout_height="wrap_content"
    android:clickable="true" android:inputType="none" />

編集可能とクリックできません。 OnClickListenerを設定すれば完了です。 理論的には、実際にあなたも追加する必要があります。

android:editable="false" 
非推奨ですが、トリックをしている

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top