android – 在编辑文本中可绘制,在错误后不更新

前端之家收集整理的这篇文章主要介绍了android – 在编辑文本中可绘制,在错误后不更新前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
android中编辑文本不允许在setError之后更改drawable.
我在密码字段中使用了drawable right,但如果密码字段中出现错误,则不允许在其后更改drawable.错误之前它工作正常.
<EditText
                android:id="@+id/edt_reg_password"
                style="@style/editText_full_view"
                android:layout_height="wrap_content"
                android:layout_below="@id/edt_reg_email"
                android:layout_marginTop="@dimen/padding_normal"
                android:drawableLeft="@mipmap/ic_action_password"
                android:drawableRight="@mipmap/ic_action_password_visibility"
                android:drawablePadding="@dimen/padding_normal"
                android:hint="@string/hint_password"
                android:inputType="textPassword"
                android:maxLength="25"
                android:paddingLeft="@dimen/padding_normal"
                tools:visibility="visible" />

用于更改眼睛图标运行时的Java代码

private void setPasswordDrawable()
    {
        final Drawable showpass_icon = getResources().getDrawable(R.mipmap.ic_action_password_visibility);
        final Drawable hidepass_icon = getResources().getDrawable(R.mipmap.ic_action_password_visibility_off);


        final Drawable pass_drawable = getResources().getDrawable(R.mipmap.ic_action_password);
        pass_drawable.setBounds(0,pass_drawable.getIntrinsicWidth(),pass_drawable.getIntrinsicHeight());


        //edtPassword.setCompoundDrawables(pass_drawable,null,showpass_icon,null);

        edtPassword.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v,MotionEvent event) {
                if (edtPassword.getCompoundDrawables()[2] == null) {
                    return false;
                }
                if (event.getAction() != MotionEvent.ACTION_UP) {
                    return false;
                }
                if (event.getX() > edtPassword.getWidth() - edtPassword.getPaddingRight()
                        - showpass_icon.getIntrinsicWidth()) {

                    if (isPasswordVisible) {

                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {

                                //edtPassword.setError(null);
                                edtPassword.setTransformationMethod(
                                        PasswordTransformationMethod.getInstance());
                                edtPassword.setSelection(edtPassword.getText().length());

                                showpass_icon.setBounds(0,showpass_icon.getIntrinsicWidth(),showpass_icon.getIntrinsicHeight());
                                edtPassword.setCompoundDrawables(pass_drawable,null);


                            }
                        });

                        isPasswordVisible = false;
                    } else {

                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {

                                //edtPassword.setError(null);
                                edtPassword.setTransformationMethod(
                                        HideReturnsTransformationMethod.getInstance());
                                edtPassword.setSelection(edtPassword.getText().length());
                                hidepass_icon.setBounds(0,hidepass_icon.getIntrinsicWidth(),hidepass_icon.getIntrinsicHeight());
                                edtPassword.setCompoundDrawables(pass_drawable,hidepass_icon,null);
                            }
                        });

                        isPasswordVisible = true;
                    }
                }
                return false;
            }
        });

    }

用于设置错误

public void setViewError(View view,String message)
{
    if (view instanceof EditText) {
         ((EditText) view).setError(message);
   }
}

解决方法

你可以用这个 –
if(error=true){
    editText.setCompoundDrawablesWithIntrinsicBounds(
        0,R.drawable.ic_error,0);
    editText.setCompoundDrawablePadding(5);}
else{
    editText.setCompoundDrawablesWithIntrinsicBounds(
        0,R.drawable.ic_corrct,0);
    editText.setCompoundDrawablePadding(5);}
原文链接:https://www.f2er.com/android/315105.html

猜你在找的Android相关文章