Как создать кликабельный Edittext? - PullRequest
0 голосов
/ 18 января 2019

Я знаю, что есть много подобных вопросов, но ни один из них не работает для меня. Я хочу сделать EditText, который действует как Button. Я хочу, чтобы он не редактировался (и никакая клавиатура не должна всплывать). Однако, когда я устанавливаю onClickListener(), EditText не реагирует на мое onClick() событие. Как мне сделать это правильно?

В моем xml я отключил focusableInTouchMode и установил для clickable значение true. Мой полученный EditText не редактируется, но он не отвечает на мой onClickListener().

Мой xml из EditText:

<EditText
            android:id="@+id/taskviewer_date"
            android:focusableInTouchMode="false"
            android:clickable="true"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textStyle="normal"
            android:textColorHint="@color/colorShadow"
            android:inputType="none"
            android:hint="No Due Date"/>

Мой код:

EditText text = (EditText) findViewById(R.id.taskviewer_date);
text.setOnClickListener(
    new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.d("taskviewer", "OnClickListener called !");
        }
    }
);

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Использование EditText setOnClickListener будет работать, если для setTextIsSelectable установлено значение true.

В XML:

<android.support.design.widget.TextInputLayout 
    android:id="@+id/textInpuLayout" 
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:hint="@string/hint_edit_text" 
    app:layout_constraintEnd_toEndOf="parent" 
    app:layout_constraintStart_toStartOf="parent" 
    app:layout_constraintTop_toTopOf="parent">

<android.support.design.widget.TextInputEditText 
    android:id="@+id/textInpuEditText" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:enabled="false" 
    android:inputType="date"/>
</android.support.design.widget.TextInputLayout>

В соответствующем фрагменте или активности :

mTextInpuEditText.setEnabled(true);
mTextInpuEditText.setTextIsSelectable(true);
mTextInpuEditText.setFocusable(false);
mTextInpuEditText.setFocusableInTouchMode(false);
mTextInpuEditText.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Log.d(TAG, "Edit Text is clicked");
    }
});
0 голосов
/ 18 января 2019

Используйте события onTouch или поместите кликабельный FrameLayout поверх вашего EditText, чтобы отловить события щелчка. Сделайте так, чтобы видимость FrameLayout исчезла, когда вы хотите, чтобы ваш текст редактирования был редактируемым

...