Подтвердить что ты не робот

Как сделать редактируемый текст не редактируемым, а кликабельным в JAVA

Можно ли сделать EditText доступным, но не редактируемым.

Я не хочу, чтобы он редактировался (также клавиатура не подходила, и мы не могли изменить подсказку)

На самом деле я хочу использовать Редактировать текст просто как изображение с подсказкой (которая не может быть изменена). Я знаю, что фактический способ состоял в использовании ImageView и one TextView, но я хочу, чтобы он попытался с EditText, потому что вместо этого я буду использовать только одно представление вместо 2. Также каждая вещь является динамической, поэтому никакой XML.

Для вышеуказанного требования решение в XML android:editable="false", но я хочу использовать его в Java.

Но,

Если я использую: -

et.setEnabled(false);

или

 et.setKeyListener(null);

Это делает EditText not EDITABLE, но в то же время делает его не кликабельным.

4b9b3361

Ответ 1

Трюк здесь: -

et.setFocusable(false);
et.setClickable(true);

Ответ 2

вы можете установить EditText с помощью java-кода в качестве парирования: -

edittext.setFocusable(false);
edittext.setClickable(true);

или используя ниже код в файле XML для EditText.

android:editable="false" 
android:inputType="none"  

Ответ 3

Вы можете использовать это.

android:focusableInTouchMode="false"

чтобы edittext не редактировался в xml. И для интерактивного события вы можете использовать событие setOnTouchListener(), чтобы сделать то же самое, что и...

editText.setOnTouchListener(new OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        // TODO Auto-generated method stub
                        //do your stuff here..
        return false;
    }
});

Ответ 4

android:editable устарел, но вы можете сделать stg, как показано ниже:

android:editable="false"
android:focusable="false"
android:focusableInTouchMode="false"

Я использовал приведенный выше код для edittexts, который я использую для выбора сборщиков. Вы можете использовать макет ввода с этим.

Ответ 5

Для меня ни один из ответов не привел к полностью работающему решению.

Витрина моего исправления https://www.youtube.com/watch?v=oUA4Cuxfdqc

Путеводитель (нубо дружественный), обратите внимание на несколько комментариев в коде.

Создайте класс Java для пользовательского EditText, называемого EditTextDispatched.java

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.RelativeLayout;

/**
 * @author Martin Pfeffer
 * @see <a href="https://celox.io">https://celox.io</a>
 */
public class EditTextDispatched extends android.support.v7.widget.AppCompatEditText {

    private static final String TAG = "DispatchingEditText";

    private boolean editable = true;

    public EditTextDispatched(Context context) {
        super(context);
    }

    public EditTextDispatched(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public EditTextDispatched(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    // get the current state
    public boolean isEditable() {
        return editable;
    }

    // set your desired behaviour
    public void setEditable(boolean editable) {
        this.editable = editable;
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent motionEvent) {

        if (editable) {
            // default behaviour of an EditText
            super.dispatchTouchEvent(motionEvent);
            return true;
        }

        // achieve the click-behaviour of a TextView (it cuztom)
        ((RelativeLayout) getParent()).onTouchEvent(motionEvent);
        return true;
    }

}

Ссылка EditTextDispatched на ваш xml (вам нужно будет изменить имя pgk):

  <io.celox.brutus.EditTextDispatched
    android:id="@+id/row_field_value"
    style="@style/row_field_text_display"
    android:layout_alignParentBottom="true"
    android:text="@string/sample_field_value" />

Чтобы вызвать:

private void changeEditTextBehaviour(EditTextDispatched value, boolean editable) {
    value.setEditable(editable);
    value.setEnabled(editable);
}

Ответ 6

edittext enable and disable for the edit like this


EditText edit = (EditText) findviewby(R.id.edittext);

through java
edit.setEnabled(false); //non editable
edit.setEnabled(true); //editable

through xml
          <EditText
                android:id="@+id/otp_mpin"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:editable="false"
                android:focusable="false"/>

Ответ 7

вы также можете сделать android:inputMethod="@null" в своем EditText, и он не отобразит курсор или клавиатуру, а затем вы легко сможете захватить клик по настройке прослушивателя.