标签: android-textinputlayout

将 TextInputLayout 提示位置更改为右侧

反正有没有把 TextInputLayout 提示放在 editText 的正上方?而且我不希望 editText 位置被改变。将 TextInputLayout 重力设置为右侧不起作用,尽管它改变了 editText 位置。

android android-design-library android-textinputlayout

5
推荐指数
1
解决办法
1303
查看次数

如何在android中更改TextInputLayout颜色?

嗨,我是 android 新手,在我的应用程序中,我使用的是 TextInputLayout 字段。

我设置了 EditText 边框颜色,但我不想设置编辑文本背景颜色,但根据我下面的代码,当我点击“注册”按钮时,编辑文本背景颜色显示为红色。

我们如何更改此背景颜色?

编辑文本_背景:-

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <solid android:color="@android:color/white" />

    <stroke
        android:width="1dip"
        android:color="@android:color/holo_purple" />

    <padding android:left="5dp"
        android:top="5dp"
        android:right="5dp"
        android:bottom="5dp"/>

</shape>
Run Code Online (Sandbox Code Playgroud)

款式:-

 <style name="TextAppearance.App.TextInputLayout" parent="@android:style/TextAppearance">
        <item name="android:textColor">@color/splahbgcolor</item>
        <item name="android:textSize">14sp</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

main.xml:-

<LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="?attr/actionBarSize"
        android:orientation="vertical"
        android:paddingLeft="20dp"
        android:paddingRight="20dp"
        android:paddingTop="60dp">

        <android.support.design.widget.TextInputLayout
            android:id="@+id/input_layout_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:hintTextAppearance="@style/TextAppearance.App.TextInputLayout">

            <android.support.v7.widget.AppCompatEditText
                android:id="@+id/input_name"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:singleLine="true"
                android:background="@drawable/edittext_background"
                android:ems="10"
                android:inputType="textEmailAddress"
                android:padding="8dp"
                android:textColor="@color/splahbgcolor"
                android:hint="@string/hint_name" />

        </android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

主要活动:-

public class MainActivity extends AppCompatActivity {

    private Toolbar toolbar;
    private EditText inputName, inputEmail, inputPassword;
    private TextInputLayout …
Run Code Online (Sandbox Code Playgroud)

android android-textinputlayout

5
推荐指数
1
解决办法
3757
查看次数

TextInputLayout :如何为 textinputlayout 的 setError() 设置填充或边距?

我必须在我的工作中使用 Android 设计支持库的 TextInputLayout。我想将 setError() 的文本放在 EditText 下,它位于 TextInputLayout 中。现在太远了,如下图所示。

我在 TextInputLayout 中设置了边距和填充,但两者都不起作用,所以我只设置了 android:layout_marginStart 和 android:layout_marginEnd 就回滚了我的代码。

感谢您的任何建议。

<android.support.design.widget.TextInputLayout
    android:id="@+id/til_et_email"
    android:layout_width="match_parent"
    android:textColorHint="#B32F874E"
    app:errorEnabled="true"
    android:layout_height="wrap_content"
    android:layout_below="@+id/til_et_ID"
    android:layout_alignParentStart="true"
    android:focusableInTouchMode="false"
    android:layout_marginStart="20dp"
    android:layout_marginEnd="20dp" >
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textEmailAddress"
        android:hint="Email Address"
        android:ems="12"
        android:textColor="#2F874E"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp"
        android:id="@+id/txtEmail"
        android:layout_marginBottom="50dp" />

</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

SetError() 与 EditText 字段相距太远

user-interface android androiddesignsupport android-textinputlayout

5
推荐指数
0
解决办法
4162
查看次数

TextInputLayout 提示左填充

我添加了一个drawableLeftin 并EditText包含在TextInputLayout. 提示的位置TextInputLayout根据文本位置(从左边即旁边drawableLeft)为:

在此处输入图片说明

但我想要提示的位置如下。 在此处输入图片说明

谢谢你。

android material-design android-textinputlayout

5
推荐指数
1
解决办法
2991
查看次数

如何使TextInputLayout的浮动标签变为粗体

我有一个TextInputLayout。我尝试应用自定义hintTextAppearance样式

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/wizard_horizontal_margin"
    android:paddingRight="@dimen/wizard_horizontal_margin"
    android:paddingTop="@dimen/wizard_vertical_margin"
    android:paddingBottom="@dimen/wizard_vertical_margin">

    <TextView
        android:paddingBottom="@dimen/wizard_vertical_margin"
        android:text="What's your email address?"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="?attr/wizardTextViewColor"
        android:textSize="18sp"
        android:id="@+id/text_view" />

    <android.support.design.widget.TextInputLayout
        app:hintTextAppearance="@style/WizardTextInputLayout"
        android:id="@+id/text_input_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textEmailAddress"
            android:hint="Email address"
            android:id="@+id/email_edit_text" />
    </android.support.design.widget.TextInputLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

我尝试通过应用以下自定义样式使文本变为粗体。

<style name="WizardTextInputLayout" parent="TextAppearance.Design.Hint">
    <item name="android:textStyle">bold</item>
</style>
Run Code Online (Sandbox Code Playgroud)

但是,在应用自定义样式之前和之后看起来都没有什么不同。

自定义hintTextAppearance样式之前

在此处输入图片说明

自定义hintTextAppearance样式后

在此处输入图片说明

我可以确认样式工作。因为,如果我android:textSizeWizardTextInputLayout样式中添加属性,则可以看到浮动标签文本大小发生了变化。

但是,为什么使浮动标签文本变为粗体不起作用?我有什么可以尝试使浮动标签文本加粗的?

java android android-layout android-textinputlayout

5
推荐指数
1
解决办法
1395
查看次数

TextInputLayout.passwordVisibilityToggleRequested上的NullPointerException

我在Firebase崩溃报告Password toggle button中遇到了一些关于某些真实设备中处于发布模式的应用的错误.问题是堆栈跟踪错误完全与android.support.design代码类似,您将在以下从firebase控制台获取的日志中看到:

异常java.lang.NullPointerException:尝试在空对象引用上调用虚方法'int java.util.ArrayList.size()'
android.graphics.drawable.AnimatedVectorDrawable.isStarted(AnimatedVectorDrawable.java:427)
android.graphics.drawable .AnimatedVectorDrawable.start(AnimatedVectorDrawable.java:440)
android.graphics.drawable.AnimatedStateListDrawable $ AnimatedVectorDrawableTransition.start(AnimatedStateListDrawable.java:339)
android.graphics.drawable.AnimatedStateListDrawable.selectTransition(AnimatedStateListDrawable.java:226)
android.graphics.drawable .AnimatedStateListDrawable.onStateChange(AnimatedStateListDrawable.java:145)
android.graphics.drawable.Drawable.setState(Drawable.java:599)
android.support.v4.graphics.drawable.DrawableWrapperGingerbread.setState(DrawableWrapperGingerbread.java:145)
android.support .v4.graphics.drawable.DrawableWrapperLollipop.setState(DrawableWrapperLollipop.java:95)
android.widget.ImageView.drawableStateChanged(ImageView.java:1115)
android.support.v7.widget.AppCompatImageButton.drawableStateChanged(AppCompatImageButton.java:149)
android.view.View.refreshDrawableState(View.java:16052)
android.support.design.widget.CheckableImageButton.setChecked(CheckableImageButton.java:75 )
android.support.design.widget.TextInputLayout.passwordVisibilityToggleRequested(TextInputLayout.java:1293)
android.support.design.widget.TextInputLayout $ 4.onClick(TextInputLayout.java:1074)
android.view.View.performClick(View.java:4785 )
android.view.View $ PerformClick.run(View.java:19888)
android.os.Handler.handleCallback(Handler.java:739)
android.os.Handler.dispatchMessage(Handler.java:95)
android.os.Looper .loop(Looper.java:135)
android.app.ActivityThread.main(ActivityThread.java:5276)
java.lang.reflect.Method.invoke(Method.java)java.lang.reflect.Method.invoke(Method.java) :372)
com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:911)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:706)

之前我一直在跟踪与此小部件相关的一些错误,我的意思是,我发布了与密码切换可见性相关的问题,我发现了一些关于此组件的问题:

我还发现了一些关于它的AOSP问题:

现在,当用户只需按下切换按钮时,我就会收到此错误

它发生在以下真实设备中:
firebase崩溃报告的设备
关于TextInputLayout和TextInputEditText的XML及其主题:

<android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/TextLabel"
        app:passwordToggleEnabled="true">

        <android.support.design.widget.TextInputEditText
            android:id="@+id/login_field_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/perfil_field_password"
            android:inputType="textPassword"
            android:maxLines="1"
            android:maxLength="100"
            android:imeOptions="actionDone"
            android:textColor="@color/colorAccent"
            android:textSize="18sp"
            android:paddingStart="15dp"
            android:paddingEnd="5dp"/> …
Run Code Online (Sandbox Code Playgroud)

android android-support-library android-support-design android-textinputlayout android-textinputedittext

5
推荐指数
0
解决办法
723
查看次数

具有自定义背景的android textInputEditText 无法正常工作

我在 textInputLayout 中使用 textInputEditText 我必须为我的editText设置背景以实现我的editText的边框视图。但是当我在 textInputLayout 上调用 setError() 时,整个 editText 颜色变为红色。但我只想更改错误文本的颜色,而不是整个视图。

设置错误前:

截屏

设置错误后:

截屏

这是我的 xml 代码:

<android.support.design.widget.TextInputLayout
            android:layout_alignParentTop="true"
            android:id="@+id/ex_pass_holder"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:passwordToggleEnabled="false"
            android:gravity="right">
            <android.support.design.widget.TextInputEditText
                android:id="@+id/ex_pass_et"
                android:layout_width="fill_parent"
                android:layout_height="50dp"
                android:hint="??? ???? ????"
                android:inputType="textPassword"
                android:textColor="#000"
                android:textSize="15sp"
                android:gravity="right|center"
                android:background="@drawable/edittext_bg"
                android:padding="8dp"
                />
        </android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

请帮帮我,我做错了什么?

android android-layout android-edittext android-textinputlayout android-textinputedittext

5
推荐指数
1
解决办法
2816
查看次数

在 Android EditText 中设置两个复合可绘制对象

TextInputEditTexts在自定义中嵌套了以下内容,TextInputLayouts并且我希望同时显示“x”图标和密码切换。但是,眼睛切换覆盖了“x”图标。

我有一个自定义TextInputLayout名称LoginInputLayout,我试图在密码 editText 的右侧添加两个可绘制对象,但我一直只看到眼睛图标。

如何在右侧添加两个可绘制对象而不是一个覆盖另一个?如下图所示。

这是我想要达到的设计

在此处输入图片说明

在父级的 Android 实现中,LayoutInputTextView第一个子级实际上是 a FrameLayout,而该 FL 的子级是TextInputEditText.

当密码切换(导致眼睛出现)设置为显示时,看起来 android 实现会膨胀切换的视图,并将其设置在 FrameLayout 中,如下所示。

if (shouldShowPasswordIcon()) {
            if (mPasswordToggleView == null) {
                mPasswordToggleView = (CheckableImageButton) LayoutInflater.from(getContext())
                        .inflate(R.layout.design_text_input_password_icon, mInputFrame, false);
                mPasswordToggleView.setImageDrawable(mPasswordToggleDrawable);
                mPasswordToggleView.setContentDescription(mPasswordToggleContentDesc);
                mInputFrame.addView(mPasswordToggleView);

                mPasswordToggleView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        passwordVisibilityToggleRequested(false);
                    }
                });
            }
Run Code Online (Sandbox Code Playgroud)

唯一的问题是,mFrameLayout 成员变量是私有的,我无法在其中添加更多子项或控制它们的放置位置。这就是为什么我觉得我只能尝试复合可绘制方式。

 <com.ge.cbyge.view.LoginInputTextLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        app:error="@{viewModel.emailError}">

        <android.support.design.widget.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/login_fragment_email_text"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:inputType="textEmailAddress"
            android:maxLines="1"
            android:text="@={viewModel.email}"/>

    </com.ge.cbyge.view.LoginInputTextLayout>

    <com.ge.cbyge.view.LoginInputTextLayout …
Run Code Online (Sandbox Code Playgroud)

android android-layout kotlin android-textinputlayout

5
推荐指数
1
解决办法
1137
查看次数

以编程方式更改 TextInputLayout 提示颜色

我正在尝试以编程方式更改更改 TextInputLayout 提示颜色。虽然设置

 android:textColorHint="@color/redColor"
Run Code Online (Sandbox Code Playgroud)

在 xml 中工作得很好,我得到了这个: 并在编辑时 这就是我想要的,但我需要动态设置它

现在我 TextInputLayout 没有 setHintTextColor 方法但是 TextInputEditText 有所以我试着这样做:

editext.setHintTextColor(getColor(R.color.redColor))
Run Code Online (Sandbox Code Playgroud)

但这不适用于作为 TextInputLayout 子级的 editext,因此即使 TextInputLayout 确实支持“android:textColorHint”属性,它也不支持“setHintTextColor”方法我寻找不同的方法,我发现有人建议使用“ setHintTextAppearance" 与预定义的样式,这就是我所做的,但它给出了以下结果:

正常状态: 专注状态: 在此处输入图片说明

这是风格的样子

<style name="AppRedText" parent="@android:style/TextAppearance">
    <item name="android:textColor">@color/redColor</item>
    <item name="android:textColorHint">@color/redColor</item>
    <item name="android:textSize">12sp</item>
</style>
Run Code Online (Sandbox Code Playgroud)

如何以编程方式实现“android:textColorHint”属性行为?

user-interface android android-layout android-textinputlayout

5
推荐指数
2
解决办法
3128
查看次数

在运行 5.1.1 的 Oppo F1S 中单击 TextInputLayout 崩溃

单击 TextInputLayout 后,应用在运行 5.1.1 的 Oppo F1S 中延迟 1 秒后崩溃。我无法访问设备拳头,我收到了 crashlytics 的崩溃报告,然后我让我的远程朋友在他们的 oppo 手机上尝试一下。

我无法找出原因,而且由于我无法访问该设备,我发现解决这个问题非常困难。

它在其他设备上运行良好,甚至在运行 8.1.0 的 oppoF7 中也能正常工作

这是我的 XML

   <android.support.design.widget.TextInputLayout
            android:id="@+id/til_email"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginEnd="24dp"
            android:layout_marginStart="24dp"
            android:layout_marginTop="32dp"
            android:theme="@style/TextLabel"
            app:hintTextAppearance="@style/TextAppearance.App.TextInputLayout"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="1.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/textView53">

            <android.support.v7.widget.AppCompatEditText
                android:id="@+id/et_email"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#00000000"
                android:drawablePadding="10dp"
                android:hint="Email"
                android:inputType="textEmailAddress"
                android:onTextChanged="@{(text, start, before, count) -> activity.onEmailChanged(text)}"
                android:paddingTop="10dp"
                app:backgroundTint="@color/black" />
        </android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

这是styles.xml

<!--Input field style-->
    <style name="MyEditText" parent="Theme.AppCompat.Light">
        <item name="colorControlNormal">@color/black</item>
        <item name="colorControlActivated">@color/black</item>
        <item name="android:textColorHint">@color/greish</item>
        <item name="android:textSize">14sp</item>
        <item name="colorAccent">@color/black</item>
    </style>
    <style name="ErrorText" parent="TextAppearance.AppCompat">
        <item name="android:textStyle">bold|italic</item>
        <item name="android:textColor">@color/colorPrimary</item>
    </style>

    <style …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-textinputlayout textinputlayout

5
推荐指数
1
解决办法
1011
查看次数