2017-10-21 94 views
-2

J'ai obtenu ce nw. Avant de cliquer sur le bouton, mon EditText est juste visible:Convertir Edittext en lecture seule et le rendre modifiable sur le bouton Appuyez sur

image

Après avoir appuyé sur le bouton, il doit convertir en un champ modifiable:

image

Je veux la ligne de champ EditText à disparaître et devenir en lecture seule et sur le bouton cliquez pour le rendre modifiable. Mais cela fait disparaître la ligne et le texte à l'intérieur perd son aspect visuel.

Voici mon code:

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

Juste pour supprimer ces lignes dans 'Edittext',' vous pouvez utiliser android: background = "null" 'et pour rendre le curseur invisible,' android: cursorVisible = "false" '. puis en cliquant sur ce bouton, définissez un arrière-plan sur 'EditText' et rendez le curseur visible à nouveau. –

+2

Bienvenue sur StackOverflow, @Fatima Saif! Nous aimerions vous aider, mais votre question n'est pas [minimale, vérifiable et complète] (https://stackoverflow.com/help/mcve). S'il vous plaît envisager d'ajouter à votre question afin que nous puissions vous aider. – AJFarmar

+0

Utilisez les deux, le 'editText' devrait être invisible par défaut et au clic il deviendra visible mais le' textView' deviendra invisible. – samirk433

Répondre

0

Votre XML devrait ressembler à ceci,

<?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> 


Maintenant, ajoutez le code suivant à votre classe d'activité.

//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); 
    } 

    } }); 

P.S: Ce n'est pas un code exécutable, mais j'espère que cela vous donnera l'idée.

+0

Vous devez le faire en tant que edittext par défaut set android: enabled = "false" en xml Et quand le bouton a cliqué set edittext activé à l'exécution par edittext.setEnabled (true); –

+0

@FatimaSaif Bien que la façon dont je vous dise soit différente et que deux vues ('EditText' et' TextView') ne soient pas nécessaires, cela peut aussi bien fonctionner. –

+0

thnx @ samirk433 Je vais essayer cela et vous laisser savoir. –