Java 将Edittext转换为只读,并在按下按钮时使其可编辑

Java 将Edittext转换为只读,并在按下按钮时使其可编辑,java,android,Java,Android,我有这个。单击按钮之前,我的EditText仅可查看: 按下按钮后,应转换为可编辑字段: 我希望EditText字段行消失并变为只读,然后单击按钮使其可编辑。但这只会使线条褪色,而且里面的文字也会失去视觉效果 这是我的密码: et1.setEnabled(false); et1.setFocusable(true); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClic

我有这个。单击按钮之前,我的
EditText
仅可查看:

按下按钮后,应转换为可编辑字段:

我希望
EditText
字段行消失并变为只读,然后单击按钮使其可编辑。但这只会使线条褪色,而且里面的文字也会失去视觉效果

这是我的密码:

et1.setEnabled(false);
et1.setFocusable(true);
btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        et1.setEnabled(true);
        et1.requestFocus();
    }
});

您的XML应该如下所示

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">

<EditText
    android:id="@+id/et1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:inputType="textPersonName"
    android:text="Name" />

<TextView
    android:id="@+id/tv1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView" />

<Button
    android:id="@+id/btn1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button" />


  </LinearLayout>

附言:这不是可执行代码,不过,希望它能让你明白这一点

只需删除
Edittext
中的那些行,
就可以使用android:background=“null”
并使光标不可见,
android:cursorVisible=“false”
。然后使用该按钮单击,将背景设置为
EditText
,并使光标再次可见。欢迎来到StackOverflow,@Fatima Saif!我们很乐意帮助你,但你的问题不是。请考虑添加您的问题,以便我们可以帮助您。使用这两个代码,<代码> EddieTeX <代码>默认是不可见的,单击它将变得可见,但是<代码>文本视图< /代码>将不可见。使用EddioType,使用Android:Copaby=“false”,Android:Edabase=“false”@ AjFAMAR,我的AppIGIGE是新的,我可能会犯一些错误,但我会尝试改进它。您必须将其默认设置为edittext,并在xml中设置android:enabled=“false”,当单击按钮时,通过edittext.setEnabled(true)在运行时设置edittext启用@FatimaSaif虽然我告诉你的方式不同,并且不需要两个视图(
EditText
TextView
),但这也可以很好地工作。thnx@samirk433我会试试这个,让你知道。@SatenderKumar-thnx对于你的帮助,我真的很感激。@samirk433当然需要帮助,但它仍然不起作用吗?可能是因为片段布局:/
//init the views.
et1.setVisiblity(GONE);
tv1.setVisiblity(VISIBLE);



 //if the textView is shown, the btn click will hide it and show editText 
 //instead, and same happens for editText
  btn1.setOnClickListener(new View.OnClickListener(){
  public void onClick(){

  if(et1.getVisiblity() != VISIBLE) {
        et1.setVisbility(VISIBLE);
        tv1.setVisibility(GONE);
   } else {
        et1.setVisbility(GONE);
        tv1.setVisibility(VISIBLE);
  }

  } });