2016-03-17 38 views
3

我已將自定義背景設置爲Xml文件中的EditText。驗證之後,我在運行時爲EditText設置不同的背景,並將錯誤設置爲TextInputLayout。但是在Android M中,不是設置背景資源,而是將背景顏色設置爲EditText。將錯誤設置爲Android上的TextInputLayout後更改EditText背景中的問題

This is image before setting error to the TextInputLayout

This is the image after setting error to the TextInputLayout

下面是我的代碼: -

XML文件中的代碼

<android.support.design.widget.TextInputLayout 
android:id="@+id/input_layout_name" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:layout_marginTop="10dp" 
app:errorTextAppearance="@style/ErrorText"> 

<EditText 
    android:id="@+id/input_name" 
    android:layout_width="fill_parent" 
    android:layout_height="40dp" 
    android:background="@drawable/edittext_selector" 
    android:hint="@string/hint_name" 
    android:imeOptions="actionNext" 
    android:inputType="textEmailAddress" /> 

</android.support.design.widget.TextInputLayout> 

輸入驗證碼

if (inputName.getText().toString().trim().isEmpty()) { 
    inputLayoutName.setErrorEnabled(true); 
    inputLayoutName.setError("Errorrroror"); 
    inputName.setBackgroundResource(R.drawable.edittext_red_focused); 
    requestFocus(inputName); 
    return false; 
} else { 
    inputName.setBackgroundResource(R.drawable.edittext_selector); 
    inputLayoutName.setErrorEnabled(false); 
} 

return true; 

下面是錯誤

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item> 
<shape> 
<solid android:color="@color/sale_color" /> 
</shape> 
</item> 

<!-- main color --> 
<item 
android:bottom="1.0dp" 
android:left="1.0dp" 
android:right="1.0dp"> 
<shape> 
<solid android:color="@android:color/white" /> 
</shape> 
</item> 

<!-- draw another block to cut-off the left and right bars --> 
<item android:bottom="1.0dp"> 
<shape> 
<solid android:color="@android:color/white" /> 
</shape> 
</item> 
</layer-list> 

回答

3

你可以做到這一點使用自定義背景的EditText我的資源文件。

創建選擇器抽拉像下面,

然後,

edittext_normal.xml

<item> 
    <shape android:shape="rectangle"> 
     <solid android:color="@android:color/transparent" /> 
    </shape> 
</item> 

<item 
    android:left="-2dp" 
    android:right="-2dp" 
    android:top="-2dp"> 
    <shape> 
     <solid android:color="@android:color/transparent" /> 
     <stroke 
      android:width="1dp" 
      android:color="@color/edit_text_normal_color" /> 
    </shape> 
</item> 

edittext_focused.xml

<item> 
    <shape android:shape="rectangle"> 
     <solid android:color="@android:color/transparent" /> 
    </shape> 
</item> 

<item 
    android:left="-2dp" 
    android:right="-2dp" 
    android:top="-2dp"> 
    <shape> 
     <solid android:color="@android:color/transparent" /> 
     <stroke 
      android:width="1dp" 
      android:color="@color/colorPrimary" /> 
    </shape> 
</item> 

edittext_red_focused.xml

<item> 
    <shape android:shape="rectangle"> 
     <solid android:color="@android:color/transparent" /> 
    </shape> 
</item> 

<item 
    android:left="-2dp" 
    android:right="-2dp" 
    android:top="-2dp"> 
    <shape> 
     <solid android:color="@android:color/transparent" /> 
     <stroke 
      android:width="1dp" 
      android:color="@color/sale_color" /> 
    </shape> 
</item> 

而且在運行時設置,當錯誤發生時

驗證碼

私人布爾va​​lidateName(){

if (inputName.getText().toString().trim().isEmpty()) { 
     inputLayoutName.setErrorEnabled(true); 
     inputLayoutName.setError("Error"); 
     inputName.setBackgroundResource(R.drawable.edittext_red_focused); 
     return false; 
    } else { 
     inputName.setBackgroundResource(R.drawable.edittext_selector); 
     inputLayoutName.setErrorEnabled(false); 
    } 

    return true; 
} 
+0

感謝分享這個錯誤繪製。它的作品對我來說很好。 – Hardy

+0

感謝它的工作,但我需要我的editText背景底線和此資源文件顯示空白背景。 –

相關問題