带边界的TextInput布局

时间:2017-06-13 12:24:18

标签: android android-layout

所以基本上我的想法是创建一个带有边界的浮动标签EditText。 情况是当EditText不在焦点时,提示应该垂直居中,但是当它被聚焦时,它将在内部扩展。

我也附上了这些例子: Image

上面一个是焦点,下面一个没有焦点。

请帮忙。

编辑密码布局:

<RelativeLayout
  android:id="@+id/relativePsw"
  android:layout_width="match_parent"
  android:layout_height="56dp"
  android:background="@drawable/psw_et_boundary">

    <android.support.design.widget.TextInputLayout
       android:id="@+id/etPasswordLayout"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       app:passwordToggleDrawable="@drawable/password_drawable"
       app:passwordToggleEnabled="true">

         <android.support.design.widget.TextInputEditText
            android:id="@+id/passwordEt"
            style="@style/EditTextCustomHolo"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#0000"
            android:hint="@string/password"
            android:inputType="textPassword"
            android:maxLines="1" />
    </android.support.design.widget.TextInputLayout>
</RelativeLayout>

Java:

最初设置填充:

  mRelativePsw.setPadding(dpToPx(14), 0, dpToPx(14), 0);
  mPasswordEt.setPadding(0, dpToPx(10), 0, 0);

OnFocusChange:

  mPasswordEt.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View view, boolean focus) {
            if (focus) {
                mPasswordEt.setPadding(dpToPx(14), dpToPx((float) 6.3), dpToPx(14), 0);
                mRelativePsw.setPadding(0, dpToPx(12), 0, 0);
                Utils.showSoftKeyboard(LoginActivity.this, mPasswordEt);
            } else {
                if (mPasswordEt.getText().toString().trim().equalsIgnoreCase("")) {
                    mPasswordEt.setPadding(dpToPx(14), 0, dpToPx(14), 0);
                    mRelativePsw.setPadding(0, dpToPx(10), 0, 0);
                }
            }
        }
    });

处理这些中的每一个都是一个漫长的过程。建议提供帮助。

1 个答案:

答案 0 :(得分:0)

我的建议是,将您的边框设计可绘制文件添加到TextInputLayout作为背景,并将一些填充设置为大约8dp将是正确的。然后将TextInputEditText的背景设置为 android:background="@android:color/transparent"

因此该编辑文本的默认行将消失,当关注该编辑文本时,当您输入其中的内容时,标签将位于该边框内。

尝试使用此代码,您希望标签位于中心位置。

尝试这是正确的,因为它在中心给出浮动标签。

<android.support.design.widget.TextInputLayout
        android:id="@+id/input_layout_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:gravity="center">

        <EditText
            android:id="@+id/input_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:gravity="center"
            android:hint="Enter Name"/>
    </android.support.design.widget.TextInputLayout>