1

Ainsi donc ce que im essayant de mettre en œuvre deux partiesEditText modifier la position du texte SetError

une im donnant mon edittext le passwordToggle pour lequel im en utilisant android.support.design.widget TextInputLayout + TextInputEditText

Donc, ce comment mon edittext ressemble

edittext with passwordToggle

la deuxième partie est que je veux ajouter la validation et définir un message d'erreur approprié. J'ai besoin du message d'erreur à afficher comme suit

edittext with custom setError

Mon code de mise en page est comme suit

<android.support.design.widget.TextInputLayout 
    style="@style/editTextBold" 
    android:id="@+id/input_pwd_parent" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:hintAnimationEnabled="false" 
    app:hintEnabled="false" 
    app:passwordToggleEnabled="true"> 

    <android.support.design.widget.TextInputEditText 
        android:id="@+id/input_pwd" 
        style="@style/editTextBold" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:background="@android:color/transparent" 
        android:ems="10" 
        android:hint="@string/hint_pwd" 
        android:inputType="textPassword" 
        android:padding="10dp" /> 
</android.support.design.widget.TextInputLayout> 

donc ce que je veux savoir est

1.How est-ce que je cache/affiche l'icône de bascule du mot de passe dans l'edittext via le code?

2.Also comment puis-je faire le message SetError apparaissent à la place de l'icône passwordToggle (une fois que je le cache via le code)

+3

La première partie est assez facile - ['TextInputLayout # setPasswordVisibilityToggleEnabled()'] (https://developer.android.com/reference/android/support/design/widget/TextInputLayout.html#setPasswordVisibilityToggleEnabled (booléen)). La seconde est un changement assez important pour la conception de 'TextInputLayout'. Il pourrait être plus facile de faire rouler votre propre 'View' personnalisé, car il semble que vous n'utilisiez maintenant' TextInputLayout' que pour le basculement du mot de passe. En dehors de cela, un hack facile pourrait être de désactiver le drawable toggle avec un drawable qui est juste votre texte "Champ obligatoire", au besoin –

+0

oui, a fini par créer ma propre vue personnalisée – ViVekH

Répondre

0

a fini par créer une vue personnalisée

enter image description here

Le composant peut être trouvé ici

https://github.com/vnh1991/CustomValidatorEditText

importer le projet lib en tant que module,

dans votre mise en page créer un conteneur

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.v2dev.customedittextdemo.MainActivity"> 

    <LinearLayout 
     android:id="@+id/llContainer" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="10dp" 
     android:orientation="vertical"></LinearLayout> 

    <Button 
     android:id="@+id/btnValidate" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:layout_below="@+id/llContainer" 
     android:padding="10dp" 
     android:text="Validate" /> 

</RelativeLayout> 

Et dans votre charge d'activité du composant dans le récipient

package com.v2dev.customedittextdemo; 

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.LinearLayout; 
import android.widget.Toast; 

import com.v_sQr_dev.customvalidatoredittext.CustomEdittext; 

public class MainActivity extends AppCompatActivity { 

    private LinearLayout llContainer; 
    private Button btnValidate; 
    private CustomEdittext inputPwd; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     llContainer = (LinearLayout) findViewById(R.id.llContainer); 
     btnValidate = (Button) findViewById(R.id.btnValidate); 
     inputPwd = new CustomEdittext(llContainer, this); 
     inputPwd.setHint("PASSWORD"); 

     btnValidate.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       if(inputPwd.validate()){ 
        Toast.makeText(MainActivity.this,"Input Valid",Toast.LENGTH_SHORT).show(); 
       } 
      } 
     }); 
    } 
} 
+0

Y at-il une raison pour laquelle nous ne pouvons pas simplement utiliser un '' tag directement dans nos mises en page XML? –

+0

Corrigez-moi si je me trompe mais comme ma classe de vue personnalisée ne s'étend pas à TextInputEditText, je ne serai pas capable de l'utiliser directement dans la mise en page. Code = https://github.com/vnh1991/CustomValidatorEditText/blob/master/customvalidatoredittext2/src/main/java/com/v_sQr_dev/customvalidatoredittext/CustomEdittext.java – ViVekH

+0

Pour utiliser votre vue personnalisée en XML, vous devez étendre 'View 'ou l'une de ses personnes décédées. Faire cela ne devrait pas prendre trop d'effort pour votre vue personnalisée.L'extension de 'TextInputEditText' n'est nécessaire que si vous voulez utiliser votre vue personnalisée à l'intérieur de' TextInputLayout'. –