Cómo convertir TextView a EditText en android?
Quiero convertir TextView en Editar texto y viceversa en un evento de clic de botón en android. No sé cómo lograrlo, por favor ayuda si alguien conoce la solución.
Recuerdos, Rajapandian.K
Mejor utilizar un ViewSwitcher
... <ViewSwitcher xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/my_switcher" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/clickable_text_view" android:clickable="true" android:onClick="TextViewClicked" android:text="@string/some_value" /> <EditText android:id="@+id/hidden_edit_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/some_value" /> </ViewSwitcher> ...
A continuación, puede cambiar las vistas
public void TextViewClicked() { ViewSwitcher switcher = (ViewSwitcher) findViewById(R.id.my_switcher); switcher.showNext(); //or switcher.showPrevious(); TextView myTV = (TextView) switcher.findViewById(R.id.clickable_text_view); myTV.setText("value"); }
Tal vez usted puede tener uno de cada uno y cambiar su visibilidad. Cuando haga clic en el botón, tome el texto del visible, aplíquelo al invisible y luego cambie su visibilidad.
Usted puede tener tanto en su diseño y en todo momento tienen sólo uno de ellos se muestra. Cuando cambia el valor de EditText, actualice el TextView oculto para mantenerlos sincronizados.
Nunca lo intenté pero usted puede (probablemente) utilizar EditText y fijar el fondo a eso de TextView. A onfocus
cambio de onfocus
simplemente puede intercambiar fondos basados en lo que desea ver en cualquier momento. Trataré de implementarlo y veré si funcionará
Lo que mejor creo es usar el concepto de Framelayout.
Tal que el diseño original parece
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> . . . </Linearlayout>
Colócalo en el interior de Framelayout así.
<FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> . . . </Linearlayout> <!-- The Magic is here --> <View android:layout_width="match_parent" android:layout_height="match_parent" /> </FrameLayout>
Aquí el LinearLayout mantendrá toda su vista EditText. También recuerda hacer que el fondo de EditText View null.
Me gusta esto
<EditText android:layout_width="fill_parent" android:layout_height="50dp" android:id="@+id/editInp" android:hint="@string/hello_world" android:background="@null" android:singleLine="true" android:inputType="textCapWords"/>
o
<EditText android:layout_width="fill_parent" android:layout_height="50dp" android:id="@+id/editInp" android:hint="@string/hello_world" android:background="@android:drawable/transparent" android:singleLine="true" android:inputType="textCapWords"/>