Raj*_*ran 31 android android-edittext
我想对我的EditText进行一些验证,其中我要显示"
"图标(当您放置editText.setError("blah blah"))但不希望弹出窗口中的文本显示"blah blah"时出现).
有什么办法吗?一种方法是创建一个自定义布局,它将在EditText中显示图像图标.但有更好的解决方案吗?
Raj*_*ran 39
经过大量研究和排列后问题得到解决 - (也感谢@van)
创建一个新的类,它将扩展EditText类似的东西 -
public class MyEditText extends EditText {
public MyEditText(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void setError(CharSequence error, Drawable icon) {
setCompoundDrawables(null, null, icon, null);
}
}
Run Code Online (Sandbox Code Playgroud)
将此类用作xml中的视图,如下所示 -
<com.raj.poc.MyEditText
android:id="@+id/et_test"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
Run Code Online (Sandbox Code Playgroud)
现在,在第三步中,只需将a设置TextWatcher为自定义文本视图,如下所示:
et = (MyEditText) findViewById(R.id.et_test);
errorIcon = getResources().getDrawable(R.drawable.ic_error);
errorIcon.setBounds(new Rect(0, 0, errorIcon.getIntrinsicWidth(), errorIcon.getIntrinsicHeight()));
et.setError(null,errorIcon);
et.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
if(s.toString().length()>6){
et.setError("", null);
}else{
et.setError("", errorIcon);
}
}
});
Run Code Online (Sandbox Code Playgroud)
其中R.drawable.ic_error=
保持文本null可以解决问题但是如果我们在setError(null)中只保留null,则不会显示验证错误; 它应该与第二个参数一起为null.
小智 12
您不需要创建新EditText类或更改xml.解决方案非常简单:
Edittext editText= (EditText) rootView.findViewById(R.id.email);
String str= editText.getText().toString();
if(str.equalsIgnoreCase("") ){
Drawable dr = getResources().getDrawable(R.drawable.error);
//add an error icon to yur drawable files
dr.setBounds(0, 0, dr.getIntrinsicWidth(), dr.getIntrinsicHeight());
editText.setCompoundDrawables(null,null,dr,null);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61363 次 |
| 最近记录: |