EditText
をクリック可能にすることはできますが、編集はできません。
編集可能にしたくない(キーボードが表示されたり、ヒントを変更したりできない)
実際には、編集テキストを単にヒント付きの画像として使用したい(これは変更できない)。実際の方法はImageView
と1つのTextView
を使用することでしたが、2つではなく1つのビューのみを使用するため、EditText
で試してほしい。また、すべてが動的であるため、XMLはありません。
上記の要件の場合、XMLのソリューションはAndroid:editable="false"
しかし、私はこれをJavaで使いたい。
しかし、
私が使用する場合:-
et.setEnabled(false);
または
et.setKeyListener(null);
EditText
を編集不可にしますが、同時にクリック不可にします。
ここでのコツは:-
et.setFocusable(false);
et.setClickable(true);
Javaコードを休閑として使用してEditText
を設定できます:-
edittext.setFocusable(false);
edittext.setClickable(true);
または、EditText
のXMLファイルで以下のコードを使用します。
Android:editable="false"
Android:inputType="none"
これを使用できます。
Android:focusableInTouchMode="false"
edittextをxmlで編集できないようにするには。クリック可能なイベントでは、setOnTouchListener()イベントを使用して、同じことを行うことができます。
editText.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
//do your stuff here..
return false;
}
});
editable
は非推奨です。 Android:inputType
をxmlの設計ではnoneとして、コーディングではInputType.TYPE_NULLとして使用できます。
XMLの設計
<Android.support.v7.widget.AppCompatEditText
Android:id="@+id/edt"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:clickable="true"
Android:focusable="false"
Android:inputType="none"
Android:text="EditText"/>
コーディング
edt.setClickable(true);
edt.setFocusable(false);
edt.setInputType(InputType.TYPE_NULL);
以下は、edittext
のクリックイベントです。
edt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(YourActivity.this,"edt click", Toast.LENGTH_LONG).show();
}
});
Android:editable
は非推奨ですが、次のようにstgを実行できます。
Android:editable="false"
Android:focusable="false"
Android:focusableInTouchMode="false"
ピッカーを使用してデータを設定する編集テキストに上記のcadeを使用しました。これで入力レイアウトを使用できます。
Edittext
このような編集の有効化と無効化
EditText edit = (EditText) findviewby(R.id.edittext);
スルーJavaコード
edit.setEnabled(false); //non editable
edit.setEnabled(true); //editable
Xmlを介して
<EditText
Android:id="@+id/otp_mpin"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:editable="false"
Android:focusable="false"/>
たぶんあなたは試すことができます
editText.setEnabled(false);
私にとっては、どの答えも完全に機能するソリューションにはなりませんでした。
私の修正のショーケース https://www.youtube.com/watch?v=oUA4Cuxfdqc
ガイド(noobフレンドリー)、コード内のいくつかのコメントに注意してください。
EditTextDispatched.JavaというカスタムEditText
のJavaクラスを作成)
import Android.content.Context;
import Android.util.AttributeSet;
import Android.view.MotionEvent;
import Android.widget.RelativeLayout;
/**
* @author Martin Pfeffer
* @see <a href="https://celox.io">https://celox.io</a>
*/
public class EditTextDispatched extends Android.support.v7.widget.AppCompatEditText {
private static final String TAG = "DispatchingEditText";
private boolean editable = true;
public EditTextDispatched(Context context) {
super(context);
}
public EditTextDispatched(Context context, AttributeSet attrs) {
super(context, attrs);
}
public EditTextDispatched(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
// get the current state
public boolean isEditable() {
return editable;
}
// set your desired behaviour
public void setEditable(boolean editable) {
this.editable = editable;
}
@Override
public boolean dispatchTouchEvent(MotionEvent motionEvent) {
if (editable) {
// default behaviour of an EditText
super.dispatchTouchEvent(motionEvent);
return true;
}
// achieve the click-behaviour of a TextView (it's cuztom)
((RelativeLayout) getParent()).onTouchEvent(motionEvent);
return true;
}
}
XmlでEditTextDispatched
を参照します(pgk-nameを変更する必要があります)。
<io.celox.brutus.EditTextDispatched
Android:id="@+id/row_field_value"
style="@style/row_field_text_display"
Android:layout_alignParentBottom="true"
Android:text="@string/sample_field_value" />
呼び出す:
private void changeEditTextBehaviour(EditTextDispatched value, boolean editable) {
value.setEditable(editable);
value.setEnabled(editable);
}
私はこの質問がすでに答えられていることを知っていますが、ここでより最新の(すなわち2018)答えを与えるために、要求された(つまり、非入力または編集可能)効果を達成するために使用するセットアップがあります:
val etUserLoc: EditText = themedEditText(R.style.Pale_Blue_Text_Bold_13) {
id = R.id.et_comp_user_keys_var_user_location
inputType = InputType.TYPE_NULL
isClickable = true
isFocusable = false
textColor = resources.getColor(R.color.Magenta) // overrides the default theme color
text = Editable.Factory.getInstance().newEditable(resources.getString(R.string.loc_swakopmund))
}.lparams(width = matchConstraint, height = matchParent) { }
はい、これはANKOです。これは、Android Projects。