在我的应用程序中,我有一个EditText,用户只有读访问权,没有写访问权。
在代码中,我设置android:enabled="false"。
虽然EditText的背景变成了黑色,但当我点击它时,键盘就会弹出来,我可以更改文本。
我应该设置什么来禁用EditText?
在我的应用程序中,我有一个EditText,用户只有读访问权,没有写访问权。
在代码中,我设置android:enabled="false"。
虽然EditText的背景变成了黑色,但当我点击它时,键盘就会弹出来,我可以更改文本。
我应该设置什么来禁用EditText?
当前回答
如果你使用android:editable="false", eclipse会提醒你这条消息“android:editable已弃用:请使用inputType”。
所以,我使用android:focusable="false"代替,它为我工作得很好。
其他回答
使用EditText.setFocusable(false)禁用编辑 setfocusableintouchmode (true)启用编辑;
使用TextView代替。
对于禁用编辑EditText,我认为我们可以使用可聚焦或启用但是
使用android:启用=…或editText.setEnabled(…) 它还将EditText中的文本颜色更改为灰色。 当点击它没有效果 使用android: focusable =…或者editText.setFocusableInTouchMode(true) 它不会改变EditText的文本颜色 当点击它时,它会突出显示EditText的底线大约几毫秒
输出
今天我仍然使用editable="false",但也使用focusable="false"。
我认为我们需要使EditText不可编辑的情况,是因为我们想保持它的EditText样式(有下划线,有提示等),但它接受其他输入而不是文本。例如一个下拉列表。
在这种用例中,我们需要EditText可点击(因此enabled="false"不合适)。设置focusable="false"完成这个技巧,但是,我仍然可以长时间按住EditText并从剪贴板粘贴我自己的文本到它。这取决于你的代码和处理方式,甚至可能导致应用程序崩溃。
所以我也使用了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); 在您的活动上,否则键盘将在第一时间弹出。