EditText更改setError文本位置

时间:2017-08-22 21:36:34

标签: android android-edittext android-textinputlayout android-textinputedittext

所以我试图实现的有两个部分

我正在给我的edittext我正在使用的密码切换 android.support.design.widget TextInputLayout + TextInputEditText

所以这就是我的edittext的样子

edittext with passwordToggle

第二部分是我想添加验证并设置相应的错误消息。 我需要将错误消息显示如下

edittext with custom setError

我的布局代码如下

<android.support.design.widget.TextInputLayout
    style="@style/editTextBold"
    android:id="@+id/input_pwd_parent"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:hintAnimationEnabled="false"
    app:hintEnabled="false"
    app:passwordToggleEnabled="true">

    <android.support.design.widget.TextInputEditText
        android:id="@+id/input_pwd"
        style="@style/editTextBold"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/transparent"
        android:ems="10"
        android:hint="@string/hint_pwd"
        android:inputType="textPassword"
        android:padding="10dp" />
</android.support.design.widget.TextInputLayout> 

所以我想知道的是

1.如何通过代码隐藏/取消隐藏编辑文本中的密码切换图标?

2.我如何使setError消息出现以代替passwordToggle图标(一旦我通过代码隐藏它)

1 个答案:

答案 0 :(得分:0)

结束创建自定义视图

enter image description here

该组件可以在这里找到

https://github.com/vnh1991/CustomValidatorEditText

将lib项目导入为模块

在布局中

创建一个容器

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.v2dev.customedittextdemo.MainActivity">

    <LinearLayout
        android:id="@+id/llContainer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:orientation="vertical"></LinearLayout>

    <Button
        android:id="@+id/btnValidate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_below="@+id/llContainer"
        android:padding="10dp"
        android:text="Validate" />

</RelativeLayout>

在您的活动中将组件加载到容器中

package com.v2dev.customedittextdemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;

import com.v_sQr_dev.customvalidatoredittext.CustomEdittext;

public class MainActivity extends AppCompatActivity {

    private LinearLayout llContainer;
    private Button btnValidate;
    private CustomEdittext inputPwd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        llContainer = (LinearLayout) findViewById(R.id.llContainer);
        btnValidate = (Button) findViewById(R.id.btnValidate);
        inputPwd = new CustomEdittext(llContainer, this);
        inputPwd.setHint("PASSWORD");

        btnValidate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(inputPwd.validate()){
                    Toast.makeText(MainActivity.this,"Input Valid",Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}