मैं @Codeversed solution उपयोग करने के लिए सुझाव है, लेकिन अगर यह किसी कारण से आप के लिए फिट नहीं करता है आप अपने कस्टम EditText
कार्यान्वयन का उपयोग कर सकते हैं।
सामान्य EditText प्रतिनिधित्व: त्रुटि के साथ 
EditText: 
कुछ शब्दों में: मैं त्रुटि प्रदर्शन के लिए कस्टम एक्सएमएल राज्य बना लिया है।
InputEditText.java:
import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.widget.EditText;
import com.example.oleksandr.inputedittext.R;
/**
* Input EditText which allows define custom drawable for error state
*/
public class InputEditText extends EditText {
private static final int[] STATE_ERROR = {R.attr.state_error};
private boolean mIsError = false;
public InputEditText(Context context) {
this(context, null, 0);
init();
}
public InputEditText(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public InputEditText(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public InputEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init();
}
private void init() {
addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// empty
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
setError(null);
}
@Override
public void afterTextChanged(Editable s) {
// empty
}
});
}
@Override
public void setError(CharSequence error) {
mIsError = error != null;
super.setError(error);
refreshDrawableState();
}
@Override
public void setError(CharSequence error, Drawable icon) {
mIsError = error != null;
super.setError(error, icon);
refreshDrawableState();
}
@Override
protected int[] onCreateDrawableState(int extraSpace) {
final int[] drawableState = super.onCreateDrawableState(extraSpace + 1);
if (mIsError) {
mergeDrawableStates(drawableState, STATE_ERROR);
}
return drawableState;
}
}
drawable/edittext_bg_error.xml
<?xml version="1.0" encoding="utf-8"?>
<shape
android:id="@+id/listview_background_shape"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<stroke
android:width="2dp"
android:color="#f00"
/>
<padding
android:bottom="2dp"
android:left="2dp"
android:right="2dp"
android:top="2dp"
/>
<corners android:radius="5dp"/>
<solid android:color="#ffffffff"/>
</shape>
drawable/edittext_bg_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<!-- custom error state drawable -->
<item android:drawable="@drawable/edittext_bg_error" app:state_error="true"/>
<!-- Do whatever you want for all other states -->
<item android:drawable="@android:drawable/editbox_background_normal"/>
</selector>
नीचे संबंधित कोड देखें
अपने attrs.xml
<attr name="errorColor" format="reference"/>
करने और styleables.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="error">
<attr name="state_error" format="boolean"/>
</declare-styleable>
</resources>
और उपयोग करने के लिए जोड़ वास्तव में सरल है:
<com.example.oleksandr.inputedittext.views.InputEditText
android:id="@id/edittext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/edittext_bg_selector"
android:inputType="text"
android:text="@string/hello_world"
/>
[संपादित करें]:
बस एहसास हुआ, कि मूल उत्तर त्रुटि पॉपअप रंग बदलने के बारे में था, लेकिन संपादन टेक्स्ट पृष्ठभूमि रंग नहीं था। वैसे भी, उम्मीद है कि यह किसी की मदद कर सकता है।
क्या आपने [इस सवाल] पर एक नज़र डाली है (http://stackoverflow.com/questions/6745577/which-theme-attribute-changes-the-text-color-of-an-edittexts-error-message)? – Eric
मैंने वास्तव में किया - लेकिन मैं बुलबुले का रंग बदलना चाहता हूं, पाठ रंग नहीं (जिसे मैं बदल सकता हूं)। मैंने देखा है कि क्रिस पृष्ठभूमि बदलने में कामयाब रहा - मुझे नहीं पता कि कैसे। – scana
ऐसा लगता है कि 'errorMessageBackground' एंड्रॉइड एपीआई स्तर 1 में पेश की गई एक नई विशेषता है। क्या आपने अपनी शैली को' value-v19' फ़ोल्डर में डालने का प्रयास किया है? –