在我的应用程序中,我有一个EditText,用户只有读访问权,没有写访问权。
在代码中,我设置android:enabled="false"。
虽然EditText的背景变成了黑色,但当我点击它时,键盘就会弹出来,我可以更改文本。
我应该设置什么来禁用EditText?
在我的应用程序中,我有一个EditText,用户只有读访问权,没有写访问权。
在代码中,我设置android:enabled="false"。
虽然EditText的背景变成了黑色,但当我点击它时,键盘就会弹出来,我可以更改文本。
我应该设置什么来禁用EditText?
当前回答
使用此选项可禁用用户输入
android:focusable="false"
android:editable="false"此方法已弃用。
其他回答
试试这个,对我来说很管用:
public class CustomEdittext extends EditText {
Boolean mIsTextEditor=true;
public CustomEdittext(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
@Override
public boolean onCheckIsTextEditor() {
// TODO Auto-generated method stub
return mIsTextEditor;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
mIsTextEditor=false;
Boolean mOnTouchEvent=super.onTouchEvent(event);
mIsTextEditor=true;
return mOnTouchEvent;
} }
注意:你需要添加this.getWindow().setSoftInputMode(windowmanager . layoutparam . soft_input_state_always_hidden); 在您的活动上,否则键盘将在第一时间弹出。
对于禁用编辑EditText,我认为我们可以使用可聚焦或启用但是
使用android:启用=…或editText.setEnabled(…) 它还将EditText中的文本颜色更改为灰色。 当点击它没有效果 使用android: focusable =…或者editText.setFocusableInTouchMode(true) 它不会改变EditText的文本颜色 当点击它时,它会突出显示EditText的底线大约几毫秒
输出
有多重是如何实现多重伤残的。
editText.setShowSoftInputOnFocus(假);和editText.setFocusable
防止编辑文本在某些文本中显示键盘书写。但光标仍然可见,用户可以粘贴一些文本。
editText.setCursorVisible(假)
隐藏光标。我不知道你为什么要这么做。用户可以输入文本和粘贴。
editText.setKeyListener(空)
我觉得这样最方便。没有办法用户如何输入文本,但小部件仍然与OnClickListener工作,如果你想触发操作时,用户触摸它
editText.setEnabled(假);
完全禁用EditText。它是字面上的“只读”,用户不能在其中输入任何文本,(例如)OnClickListener不能与它一起工作。
文本编辑文档
我使用谷歌新发布的材料设计库。在我的情况下,它工作时,我使用 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的功能,只需使用:
EditText.setInputType(InputType.TYPE_NULL);
如果你想以某种方式启用它,那么你可以使用:
EditText.setInputType(InputType.TYPE_CLASS_TEXT);