textinputedittext style personalizar outlined fields edittext custom android android-layout android-edittext appcompat android-textinputlayout

android - style - El diseño de TextInput convierte editext en rojo en el error de configuración



textinputedittext (1)

Tienes que setError () no para TextInputLayout sino para EditText dentro de TextInputLayout.

XML: aquí asigné el id para EditText dentro de TextInputLayout;

<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: aquí encuentro EditText por ID y le asigno setError ().

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

Tengo un diseño, cada vez que presiono el botón enviar y establezco el error en el diseño de entrada de texto, convierte el texto de edición en rojo, pero no he puesto ningún color en editText en el error de configuración. Básicamente, solo quería dar la cadena de error debajo de editText y no convertir editText en rojo al configurar el error. Mi código Fragmento es el siguiente,

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

Mi código xml para el fragmento es el siguiente con el diseño lineal como principal,

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

y el estilo para editext y el diseño de entrada es el siguiente,

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

Básicamente, solo quería dar la cadena de error debajo del texto y no convertir el texto en rojo al configurar el error.

Mi ui después de establecer el error es,

Mi ui normal,