在我的应用程序中,我有一个EditText,用户只有读访问权,没有写访问权。
在代码中,我设置android:enabled="false"。
虽然EditText的背景变成了黑色,但当我点击它时,键盘就会弹出来,我可以更改文本。
我应该设置什么来禁用EditText?
在我的应用程序中,我有一个EditText,用户只有读访问权,没有写访问权。
在代码中,我设置android:enabled="false"。
虽然EditText的背景变成了黑色,但当我点击它时,键盘就会弹出来,我可以更改文本。
我应该设置什么来禁用EditText?
当前回答
在我的情况下,我需要我的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);
}
}
其他回答
使用android:editable="false"是Depracted。相反,你需要使用android:focusable="false"
您可以尝试以下方法:
private void disableEditText(EditText editText) {
editText.setFocusable(false);
editText.setEnabled(false);
editText.setCursorVisible(false);
editText.setKeyListener(null);
editText.setBackgroundColor(Color.TRANSPARENT);
}
启用EditText:
禁用EditText:
这对我有用,希望能帮到你。
试试这个,对我来说很管用:
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,他变成灰色,如果你设置focusable false光标显示。
如果你只想用xml来做,这就可以了
<YourFloatLabel
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/view_ads_search_select"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:clickable="true"/>
</YourFloatLabel>
我只是添加了一个FrameLayout出现在editText上面,并将其设置为可聚焦和可点击,这样editText就不能被点击了。
从@渐近线对已接受答案的评论中,使用:
myEditText.setEnabled(false);
myEditText.setInputType(InputType.TYPE_NULL);
...鲍勃是你的叔叔。