在我的应用程序中,我有一个EditText,用户只有读访问权,没有写访问权。
在代码中,我设置android:enabled="false"。
虽然EditText的背景变成了黑色,但当我点击它时,键盘就会弹出来,我可以更改文本。
我应该设置什么来禁用EditText?
在我的应用程序中,我有一个EditText,用户只有读访问权,没有写访问权。
在代码中,我设置android:enabled="false"。
虽然EditText的背景变成了黑色,但当我点击它时,键盘就会弹出来,我可以更改文本。
我应该设置什么来禁用EditText?
当前回答
简单:
editText.setEnabled(false);
其他回答
我相信正确的方法是设置android:editable="false"。
如果你想知道为什么我的链接指向TextView的属性,你的答案是,因为EditText从TextView继承:
EditText是一个薄薄的贴面 配置自身为的TextView 可编辑的。
更新: 正如下面的评论中提到的,editable已弃用(从API级别3开始)。您应该使用inputType(值为none)。
使用此选项可禁用用户输入
android:focusable="false"
android:editable="false"此方法已弃用。
我使用谷歌新发布的材料设计库。在我的情况下,它工作时,我使用 android: focusable = " false " android: cursorVisible = " false "
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/to_time_input_layout"
app:endIconMode="custom"
app:endIconDrawable="@drawable/ic_clock"
app:endIconContentDescription="ToTime"
app:endIconTint="@color/colorAccent"
style="@style/OutlinedEditTextStyle"
android:hint="To Time">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/to_time_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="false"
android:cursorVisible="false" />
</com.google.android.material.textfield.TextInputLayout>
在我的情况下,我需要我的EditText滚动文本,如果没有。当它被禁用时,行数超过maxLines。这个实现非常适合我。
private void setIsChatEditTextEditable(boolean value)
{
if(value)
{
mEdittext.setCursorVisible(true);
mEdittext.setSelection(chat_edittext.length());
// use new EditText(getApplicationContext()).getKeyListener()) if required below
mEdittext.setKeyListener(new AppCompatEditText(getApplicationContext()).getKeyListener());
}
else
{
mEdittext.setCursorVisible(false);
mEdittext.setKeyListener(null);
}
}
在类中设置以下属性:
editText.setFocusable(false);
editText.setEnabled(false);
它会像你要求的那样顺利工作。