Android Studio:EditText editable已弃用如何使用inputType

n7taea2i  于 2023-06-24  发布在  Android
关注(0)|答案(9)|浏览(285)

我想认识到

android:editable="false"

但是它告诉我editable是 deprecated,你可以使用inputType代替。
所以我不知道如何使用inputType来实现它。

gijlo24d

gijlo24d1#

使用
android:clickable=“false”
. but如果你想使用onclick监听器。不使用
android:clickable=“false”
..使用
android:cursorVisible=“false”android:focusable=“false”.

pzfprimi

pzfprimi2#

代码

XML格式

<EditText
    android:id="@+id/myEditText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="Hint"
    android:focusable="false"
    android:clickable="false"
    android:cursorVisible="false"
    />

结果

Java代码

您可以在运行时使用此代码实现相同的结果

EditText et = findViewById(R.id.myEditText);
et.setFocusable(false);
et.setClickable(false);
et.setCursorVisible(false);
dluptydi

dluptydi3#

如果您使用的输入类型不是文本或数字,如日期或日期和时间,则可以使用android:inputType="date"android:inputType="datetime"android:inputType="time"。如果你不使用任何这样的输入类型,你可以使用android:inputType="none"

w1e3prcc

w1e3prcc4#

上面所有建议更改XML标记的答案似乎都不起作用。然而,我设法通过代码实现了类似的结果。
只需用途:
setString(null);

a8jjtwal

a8jjtwal5#

如果您想使用EditText的单击并禁用输入,请使用此选项

android:clickable="false" 
android:cursorVisible="false" 
android:focusable="false" 
android:focusableInTouchMode="false"
wydwbb8l

wydwbb8l6#

您可以从TextWatcher控制EditText的行为

@Override
public void onTextChanged(String text) {
     setEditTextCurrentValue((isEditTextEditable())?text:getEditTextCurrentValue());
}

所以用户可以进入到控件中,可以复制它的内容。但如果你不允许他也改不了。

jv4diomz

jv4diomz7#

使用

android:inputType="none"

而不是

android:editable="false"
ldfqzlk8

ldfqzlk88#

当你使用inputType=none时,输入类型并没有按照你期望的方式工作
但是你可以用它来使你的editText不可编辑,我认为这是你想要实现的

<EditText
            android:cursorVisible="false"
            android:focusableInTouchMode="false"
            android:maxLength="10"/>

如果你想让EditText再次可编辑,你可以通过代码来实现

//enable view's focus event on touch mode
edittext.setFocusableInTouchMode(true);

//enable cursor is visible
edittext.setCursorVisible(true);

// You have to focus on the edit text to avoid having to click it twice
//request focus 
edittext.requestFocus();

//show keypad is used to allow the user input text on the first click
InputMethodManager openKeyboard = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 

openKeyboard.showSoftInput(edittext, InputMethodManager.SHOW_IMPLICIT);

注意我使用的是android:focusableInTouchMode="false"而不是

android:focusable="false"

因为当我使用

edittext.setFocusable(true);

我还得加上

edittext.setFocusableInTouchMode(true);

就像这样

edittext.setFocusableInTouchMode(true);
edittext.setFocusable(true);

再次启用edittext焦点

xesrikrc

xesrikrc9#

可以在如下代码中设置它:

myEditText.inputType = InputType.TYPE_NULL

相关问题