Android에서 XML을 통해 EditText를 편집할 수 없게 만드는 방법?
어떻게 만드는지 알려줄 수 있는 사람?EditText
요? XML로 설정해 . 설정을 시도했습니다.android:editable
false
,그렇지만
- 감가 상각되었습니다.
- 효과가 없었습니다.
EditText xml 파일에 추가합니다.
<EditText ...
android:clickable="false"
android:cursorVisible="false"
android:focusable="false"
android:focusableInTouchMode="false">
</EditText>
과 가 가 과 과 같은 효과android:editable="false"
. 저를 위해 일했어요, 당신에게도 효과가 있기를 바랍니다.
이 간단한 코드를 사용합니다.
textView.setKeyListener(null);
그건 효과가 있다.
: 을 하려면 : KeyListener
나중에과 같이 ㅠㅠ
: 키를 1의 태그로 설정합니다 : 합니다 로 를 합니다 로 를 textView
textView.setTag(textView.getKeyListener());
textView.setKeyListener(null);
: listener를 합니다 : 에서 를 합니다 합니다 를 에서 textView
textView.setKeyListener((KeyListener) textView.getTag());
편집 텍스트를 다음과 같이 하십시오.
EditText editText;
editText.setKeyListener(null);
작동은 되지만 키를 듣지 않을 뿐입니다.
사용자는 편집 텍스트에서 커서를 볼 수 있습니다.
해봐도 좋습니다.editText.setEnabled(false);
이는 사용자가 커서를 볼 수 없음을 의미합니다.간단히 말하면 그렇게 될 것입니다.TextView
.
다른 답변에서 언급된 바와 같이, 당신은 다음과 같이 할 수 있습니다.setEnabled(false)
XML을 통해 설정하는 방법을 묻기 때문에 다음과 같습니다.
다음 을 합니다에 합니다.EditText
:
android:enabled="false"
XML에서 사용 안 함(한 줄):
android:focusable="false"
필요한 경우 Java에서 다시 활성화합니다(한 줄도 있음).
editText.setFocusableInTouchMode(true);
이들은 "편집 가능"을 더 이상 사용하지 않게 만들었지만 inputType에서 작동하는 것에 해당하는 것을 제공하지 않았습니다.
그런데 inputType="none"은 효과가 있습니까?내가 보기에 그것을 사용하든 사용하지 않든 아무런 차이가 없습니다.
예를 들어, 기본 editText는 한 줄이라고 합니다.그러나 입력 유형을 선택해야 한 줄로 표시됩니다.none(없음)을 선택해도 여전히 다중 행입니다.
이 조합은 제게 효과가 있었습니다.
<EditText ... >
android:longClickable="false"
android:cursorVisible="false"
android:focusableInTouchMode="false"
</EditText>
Android:editable은 더 이상 사용되지 않습니다.안드로이드:inputType="none"을 대신 사용해야 하지만 버그(https://code.google.com/p/android/issues/detail?id=2854) 로 인해 작동하지 않습니다.
하지만 포커스가 가능한 것을 사용하면 같은 것을 얻을 수 있습니다.
XML을 통해:
<EditText ...
android:focusable="false"
</EditText>
출처 코드:
((EditText) findViewById(R.id.LoginNameEditText)).setFocusable(false);
클릭하고 싶지만 편집하지 않으려면 다음을 시도합니다.
android:focusable="false"
을 요.android:enabled="false"
. 은 에 을 할 입니다 입니다 할 을 에 은 EditText
편집할 수 없는 것처럼 보일 겁니다.
<EditText
android:id="@+id/txtDate"
android:layout_width="140dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="10dp"
android:layout_marginTop="2dp"
android:clickable="false"
android:cursorVisible="false"
android:gravity="center" />
다음을 사용합니다.
txtDate.setKeyListener(null);
자바 코드로 실행하려면 다음 줄을 사용하여 비활성화합니다.
editText.setEnabled(false);
그리고 이를 가능하게 하는 방법:
editText.setEnabled(true);
저는 이렇게 하려고 했습니다.
textView.setInputType( InputType.TYPE_NULL );
효과가 있어야 하는데, 저한테는 효과가 없었어요.
저는 이 코드로 끝냈습니다.
textView.setKeyListener(new NumberKeyListener() {
public int getInputType() {
return InputType.TYPE_NULL;
}
protected char[] getAcceptedChars() {
return new char[] {};
}
});
완벽하게 작동하는군요
텍스트 편집에 초점을 맞추지 않고 클릭 시 키보드가 표시되지 않는 활동을 원할 때는 이렇게 해야 합니다.
주 레이아웃에 특성 추가
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"
텍스트 편집 필드를 선택합니다.
android:focusable="false"
android:focusableInTouchMode="false"
다음은 예입니다.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_home"
android:background="@drawable/bg_landing"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="0dp"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:paddingTop="@dimen/activity_vertical_margin"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"
tools:context="com.woppi.woppi.samplelapp.HomeActivity">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:inputType="textPersonName"
android:ems="10"
android:id="@+id/fromEditText"
android:layout_weight="1"
android:hint="@string/placeholder_choose_language"
android:textColor="@android:color/white"
android:textColorHint="@android:color/darker_gray"
android:focusable="false"
android:focusableInTouchMode="false"
android:onClick="onSelectFromLanguage" />
</RelativeLayout>
@mahe madi 외에도 이것도 시도해 볼 수 있습니다.
editText.setEnabled(false);
editor.setTextColor(Color.BLACK);
이 방법은 커서를 숨기고 초점을 잃으며 텍스트 보기와 같이 동작하는 텍스트 색을 검은색으로 설정합니다.
텍스트를 편집하려면 텍스트 편집의 모든 속성을 얻으려면 이 작업을 수행하기만 하면 됩니다.
editText.setEnabled(true);
도움이 되길 바라요 :)
당신은 사용할 수 있습니다.android:editable="false"
하지만 당신에게 정말로 조언하고 싶습니다.setEnabled(false)
컨트롤을 편집할 수 없다는 시각적 단서를 사용자에게 제공하기 때문입니다.비활성화된 모든 위젯에서 동일한 시각적 큐가 사용되며 일관성이 좋습니다.
시도해 보기:
android:inputType="none"
이렇게 하면 클립보드를 선택하고 복사할 수 있지만 수정하거나 붙여넣을 수 없습니다.
android:enable="true"
android:textIsSelectable="true"
android:inputType="none"
저는 다음을 시도해 봤습니다.
codeEditText.setInputType(InputType.TYPE_NULL);
this.codeEditText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
pickCode();
}
}
});
this.codeEditText.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
pickCode();
}
});
그러나 문제는 편집 텍스트가 양식의 첫 번째인 경우 포커스를 받아 새로운 활동을 시작하는 pickCode() 코드가 바로 호출된다는 것입니다.그래서 코드를 다음과 같이 수정했는데 꽤 잘 작동하는 것 같습니다(단, 텍스트 편집에 포커스를 맞출 수는 없지만 그럴 필요는 없습니다).
itemCodeEditText.setFocusable(false);
this.itemCodeEditText.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
pickItem();
}
});
안부 전합니다,
댓글 환영합니다.
존 고슈
사용합니다.EditText.setFocusable(false)
편집하려면 다시 true로 설정합니다.
이것을 시도해보세요. 몇몇 사람들에게 도움이 될 수도 있습니다.
<EditText
android:enabled="false"
android:textColor="#000000"/>
Android:editable이 더 이상 사용되지 않으므로 대신 inputType을 사용합니다.
<EditText
android:id="@+id/editText_x"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="70"
android:inputType="none"
android:hint="@string/enter_x" />
나는 같은 문제에 직면했지만 관찰 후에 나는 그것을 발견했습니다.android:editable="false"
입력 유형일 때만 작동합니다(android:inputType="ANY_VALUE"
편집 텍스트에는 제공되지 않습니다.
EditText에서 inputType을 제거하고 편집 가능한 = false를 사용하여 정상적으로 작동합니다.
단답형:사용했습니다.android:focusable="false"
그리고 그것은 성공하였다.클릭 듣기도 지금 작동 중입니다.
저는 대화를 통해 이 문제를 해결합니다.
AlertDialog dialog;
EditText _editID;
TextView _txtID;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_principal);
_txtID = (TextView) findViewById(R.id._txtID);
dialog = new AlertDialog.Builder(this).create();
_editID = new EditText(this);
_editID.setInputType(InputType.TYPE_NUMBER_FLAG_SIGNED);
dialog.setTitle("Numero do Registro:");
dialog.setView(_editID);
dialog.setButton(DialogInterface.BUTTON_POSITIVE, "IR", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
_txtID.setText(_editID.getText());
toId(Integer.parseInt((_editID.getText().toString())));
}
});
dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "CANCELAR", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
_txtID.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
_txtID.setText("_editID.getText()");
//_editID.setText("");
dialog.show();
}
});
코틀린 확장 옵션:
fun AppCompatAutoCompleteTextView.setEditable(editable: Boolean) {
if (!editable) {
this.tag = this.keyListener
this.keyListener = null
} else {
if(this.tag is KeyListener) {
this@setEditable.keyListener = this@setEditable.tag as KeyListener
}
}
}
다음과 같은 방법으로 편집 가능한 텍스트를 전환할 수 있습니다.
public void toggleEditableOfEditText(EditText editText){
if (editText.getKeyListener() != null) {
editText.setTag(editText.getKeyListener());
editText.setKeyListener(null);
} else {
editText.setKeyListener((KeyListener) editText.getTag());
}
}
다음 방법을 사용하여 편집 텍스트를 편집할 수 있거나 편집할 수 없도록 만듭니다.
toggleEditableOfEditText(editText);
해라
.setInputType(InputType.TYPE_NULL);
이 코드를 사용해 보세요.제 프로젝트에서 작동하고 있으니, 당신의 프로젝트에서도 작동할 것입니다.
android:editable="false"
언급URL : https://stackoverflow.com/questions/3928711/how-to-make-edittext-not-editable-through-xml-in-android
'source' 카테고리의 다른 글
Excel VBA 라인 컬러 / 마커 라인 컬러 (0) | 2023.09.13 |
---|---|
패닉: AVD 시스템 경로가 끊겼습니다.ANDROD_SDK_ROOT 값 확인 (0) | 2023.09.13 |
mysql datetime과 python 타임스탬프 사이를 변환하는 적절한 방법은 무엇입니까? (0) | 2023.09.08 |
왜 안되나요?왜 안되나요?왜 안되나요?플렉스 용기인가요? (0) | 2023.09.08 |
경고:Mac OS High Sierra에서 brew를 사용하여 mysql을 설치하려고 할 때 설치 후 단계가 성공적으로 완료되지 않았습니다. (0) | 2023.09.08 |