3

Ich habe ein Layout, wenn ich Submit-Taste drücken und Fehler auf Texteingabe-Layout setzt es den redigierenText in rot, aber ich hatte keine Farbe auf editText auf Fehler eingestellt. Grundsätzlich wollte ich nur die Fehlerzeichenfolge unter dem editText geben und editText beim Setzen des Fehlers nicht rot werden lassen. My Fragment Code ist wie folgt,TextInput-Layout verwandelt Editext in rot bei Einstellungsfehler

public class SignIn extends Fragment implements View.OnClickListener 
{ 
TextInputLayout edEamil,edPassword; 

@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    super.onCreateView(inflater, container, savedInstanceState); 
    // LogUtil.e(TAG,"onCreateView"); 
    return inflater.inflate(R.layout.fragment_signin,container,false); 
} 

@Override 
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    // LogUtil.e(TAG,"onViewCreated"); 
    Button btSignin= GeneralFunction.findViewByIdAndCast(view, R.id.fs_bt_submit); 
    btSignin.setOnClickListener(this); 
    btSignin.setText(GeneralFunction.covertFistChat_everyWordUpper(getString(R.string.first_signin))); 

    TextView tvForgetPassword= GeneralFunction.findViewByIdAndCast(view, R.id.fs_tv_fPassword); 
    tvForgetPassword.setOnClickListener(this); 

    TextView tvSignUP= GeneralFunction.findViewByIdAndCast(view, R.id.fs_tv_fSignup); 
    tvSignUP.setOnClickListener(this); 
    tvSignUP.setText(GeneralFunction.covertFistChat_everyWordUpper(getString(R.string.first_signUP))); 

    edEamil=GeneralFunction.findViewByIdAndCast(view,R.id.fs_ti_email); 
    DrawableState.editextSelector(edEamil); 

    edPassword=GeneralFunction.findViewByIdAndCast(view,R.id.fs_ti_password); 
    DrawableState.editextSelector(edPassword); 
} 

@Override 
public void onClick(View v) { 
    switch (v.getId()) 
    { 
     case R.id.fs_bt_submit: 
     { 
      edEamil.setError("Not a valid email address!"); 
      edPassword.setError("Not a valid password!"); 
     }break; 
    } 
} 
} 

für Fragment My XML-Code ist, wie bei der linearen Layout als Mutter folgt,

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

<android.support.design.widget.TextInputLayout 
    android:id="@+id/fs_ti_email" 
    style="@style/textInputLayout"> 

    <EditText 
     style="@style/edittext" 
     android:tag="@string/str_email" 
     android:hint="@string/str_email"/> 
</android.support.design.widget.TextInputLayout> 

<android.support.v4.widget.Space 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/dim_edMarginTop"/> 

<android.support.design.widget.TextInputLayout 
    android:id="@+id/fs_ti_password" 
    style="@style/textInputLayout"> 

    <EditText 
     style="@style/edittext" 
     android:imeOptions="actionDone" 
     android:inputType="textPassword" 
     android:tag="@string/str_password" 
     android:hint="@string/str_password"/> 
</android.support.design.widget.TextInputLayout> 

<android.support.v4.widget.Space 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/dim_edMarginButtonView"/> 

<android.support.v7.widget.AppCompatButton style="@style/button" 
    android:id="@+id/fs_bt_submit" 
    android:text="@string/first_signin"/> 

<android.support.v4.widget.Space 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/dim_edPaddingLeftRigh"/> 

<RelativeLayout android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
    <TextView style="@style/textView" 
     android:id="@+id/fs_tv_fPassword" 
     android:text="@string/str_forgetPassword" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentLeft="true"/> 
    <TextView style="@style/textView" 
     android:id="@+id/fs_tv_fSignup" 
     android:text="@string/first_signUP" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentRight="true"/> 
</RelativeLayout> 

und der Stil für EditExt und Eingabe Layout ist als folgt,

<style name="textInputLayout"> 
    <item name="android:layout_width">match_parent</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:paddingBottom">@dimen/dim_textLaoutMargin</item> 
    <item name="android:layout_marginBottom">@dimen/dim_textLaoutMargin</item> 
</style> 

<style name="edittext" parent="android:Widget.EditText"> 
    <item name="android:singleLine">true</item> 
    <item name="android:textSize">@dimen/dim_widgetMarginLeft</item> 
    <item name="android:textColor">@color/colorWhite</item> 
    <item name="android:paddingLeft">@dimen/dim_edPaddingLeftRigh</item> 
    <item name="android:paddingRight">@dimen/dim_edPaddingLeftRigh</item> 
    <item name="android:paddingTop">@dimen/dim_edPaddingTop</item> 
    <item name="android:paddingBottom">@dimen/dim_edPaddingBottom</item> 
    <item name="android:gravity">start</item> 
    <item name="android:background">@android:color/transparent</item> 
    <item name="android:textColorHint">@color/colorWhite</item> 
    <item name="android:layout_width">match_parent</item> 
    <item name="android:layout_height">@dimen/dim_buttonHeight</item> 
    <item name="android:inputType">text|textCapSentences|textNoSuggestions</item> 
    <item name="android:privateImeOptions">nm</item> 
    <item name="android:imeOptions">actionNext</item> 

    <item name="colorControlNormal">@color/colorWhite</item> 
    <item name="colorControlActivated">@color/colorPrimary</item> 
    <item name="android:textColorPrimary">@color/colorPrimary</item> 
</style> 

grundsätzlich wollte ich nur den Fehler st geben klingeln Sie unterhalb des Editext und setzen Sie Editext beim Setzen des Fehlers nicht in Rot.

Mein ui nach der Fehlereinstellung ist, enter image description here

Meine normalen ui, enter image description here

+0

löschen Hintergrund von EditText Stil –

+0

https://stackoverflow.com/questions/33709066/how-to-set-textinputlayout-error-message-colour – Manifest

Antwort

0

Sie zu setError haben() nicht zu TextInputLayout sondern EditText innen TextInputLayout.

XML: hier habe ich ID für EditText in TextInputLayout zugewiesen;

<android.support.design.widget.TextInputLayout 
    style="@style/textInputLayout" 
    android:id="@+id/fs_ti_email"> 

    <EditText 

     android:id="@+id/edit_text_email" <!-- here your id--> 
     style="@style/edittext" 
     android:tag="@string/str_email" 
     android:hint="@string/str_email"/> 
</android.support.design.widget.TextInputLayout> 

Java: hier finde ich EditText von ID und ordnen setError() zu.

EditText email; 

     //your code here... 
     ... 
    @Override 
    public void onClick(View v) { 
    switch (v.getId()) 
    { 
     case R.id.fs_bt_submit: 
     { 
      email.setError("Not a valid email address!"); 
     }break; 
    } 
    } 
+0

ich will nicht den eingestellten Fehler verwenden, Methode von Editext. – TheReprator

+0

Was ist der Grund? Ein Fehler bei EditText sollte für mich kein Problem sein. – FARID

+0

Als Sie kommentiert haben, wenn Sie nur die Farbe von Text unter EditText ändern möchten, sollten Sie Error() auf EditText setzen. – FARID