标签: android-textinputedittext

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
查看次数

TextInputLayout 轮廓提示颜色

我在 TextInputLayout 上有一个奇怪的错误。com.google.android.material.textfield.TextInputEditText焦点的提示颜色变为白色。

在此处输入图片说明

这就是我设置它的方式:

<com.google.android.material.textfield.TextInputLayout
                        android:id="@+id/inputEmail"
                        style="@style/EditText.OutlinedBox"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginStart="16dp"
                        android:layout_marginTop="10dp"
                        android:layout_marginEnd="16dp"
                        app:boxStrokeColor="@color/colorBrand">

                        <com.google.android.material.textfield.TextInputEditText
                            android:id="@+id/editTextEmail"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_gravity="start"
                            android:hint="@string/edt_hint_email"
                            android:inputType="textEmailAddress"
                            android:textAlignment="viewStart" />
                    </com.google.android.material.textfield.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

..这是风格:

 <style name="EditText.OutlinedBox" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
        <item name="android:minHeight">56dp</item>
        <item name="android:textSize">18sp</item>
        <item name="android:fontFamily">@font/dubai_regular</item>
        <item name="hintEnabled">true</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

编辑:添加 style.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="TextAppearance.AppCompat.Title" parent="TextAppearance.AppCompat.Large">
        <item name="android:textColor">@color/colorTextPrimary</item>
        <item name="android:layout_gravity">center_vertical</item>
    </style>


    <style name="EditText.OutlinedBox" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
        <item name="android:minHeight">56dp</item>
        <item name="android:textSize">18sp</item>
        <item name="android:fontFamily">@font/dubai_regular</item>
        <item name="hintEnabled">true</item>
    </style>

    <style name="Button" parent="Widget.MaterialComponents.Button">
        <item name="cornerRadius">10dp</item>
        <item name="backgroundTint">@color/colorAccent</item>
        <item name="android:minHeight">56dp</item>
        <item name="android:textAllCaps">false</item>
        <item name="android:fontFamily">@font/dubai_bold</item>
        <item name="android:elevation">0dp</item>
        <item …
Run Code Online (Sandbox Code Playgroud)

layout android kotlin android-textinputlayout android-textinputedittext

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

inputType EditText 中的 textMultiLine 和 textImeMultiLine 有什么区别?

我想明白之间的差别textMultiLine,并 textImeMultiLine为选择android:inputTypeEditText。但是,我一直无法理解答案。文档说

IME 是一种允许用户输入文本的控件。


但我不明白 texMultiLine 与 textImeMultiLine 有何不同。

android multiline android-edittext android-inputtype android-textinputedittext

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

如何正确从材料设计 TextInputLayout 获取文本?

我想使用自定义结束图标从材料设计的 TextInputLayout 获取文本。

我试图这样做:

TextInputLayout textInputCustomEndIcon = findViewById(R.id.editText);
final TextInputEditText editText = new TextInputEditText(textInputCustomEndIcon.getContext());

textInputCustomEndIcon
                .setEndIconOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                if (editText.getText() != null) {
                                    String text = editText.getText().toString();

                                    Log.i("MainActivity", "setEndIconOnClickListener:"+ text);
                                }
                            }
                            });
Run Code Online (Sandbox Code Playgroud)

但我得到一个空文本,不是空而是空!!

android material-design android-textinputlayout android-textinputedittext

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

在 TextView 内打字会导致整个布局/屏幕“振动”

我有以下布局:

<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

  
    <androidx.core.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:paddingStart="@dimen/side_margin"
            android:paddingTop="@dimen/layout_margin_large"
            android:paddingEnd="@dimen/side_margin"
            android:paddingBottom="@dimen/layout_margin_default">

      
            <!-- Some oother stuff....-->
            
            <com.google.android.material.textview.MaterialTextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/layout_margin_default"
                android:text="@string/optional_data" />

            <com.google.android.material.textfield.TextInputLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/brand"
                android:layout_marginTop="@dimen/layout_margin_default"
                app:startIconDrawable="@drawable/baseline_store_24">
                <com.google.android.material.textfield.TextInputEditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="text" />
            </com.google.android.material.textfield.TextInputLayout>


            <com.google.android.material.textfield.TextInputLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/model"
                android:layout_marginTop="@dimen/layout_margin_default"
                app:startIconDrawable="@drawable/baseline_directions_car_24">
                <com.google.android.material.textfield.TextInputEditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="text" />
            </com.google.android.material.textfield.TextInputLayout>

            <com.google.android.material.textfield.TextInputLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/build_year"
                android:layout_marginTop="@dimen/layout_margin_default"
                app:startIconDrawable="@drawable/baseline_event_24">
                <com.google.android.material.textfield.TextInputEditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="date" />
            </com.google.android.material.textfield.TextInputLayout>

            <com.google.android.material.textfield.TextInputLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/license_plate"
                android:layout_marginTop="@dimen/layout_margin_default"
                app:startIconDrawable="@drawable/baseline_pin_24">
                <com.google.android.material.textfield.TextInputEditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="text" />
            </com.google.android.material.textfield.TextInputLayout>

            <com.google.android.material.textfield.TextInputLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content" …
Run Code Online (Sandbox Code Playgroud)

android textview android-layout material-design android-textinputedittext

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

膨胀类TextInputEditText时出错

我正在尝试在XML中使用TextInputEditText,并且遇到此错误:

Caused by: android.view.InflateException: Binary XML file line #15: 
Error inflating class android.support.design.widget.TextInputEditText

Caused by: java.lang.ClassNotFoundException: Didn't find class 
"android.support.design.widget.TextInputEditText" on path: 
DexPathList[[zip file "/data/app/thanhnguyen.com.familysharinglocation-
1/base.apk"],nativeLibraryDirectories=
[/data/app/thanhnguyen.com.familysharinglocation-1/lib/arm64, 
/system/lib64, /vendor/lib64]]
Run Code Online (Sandbox Code Playgroud)

这是我的xml:

<android.support.design.widget.TextInputLayout
    android:id="@+id/fullName"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    >

    <android.support.design.widget.TextInputEditText
        android:hint="@string/fullName"
        android:inputType="textCapWords"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

我的依赖:

compile 'com.android.support:design:23.0.1'
compile 'com.android.support:appcompat-v7:23.0.1'
Run Code Online (Sandbox Code Playgroud)

android android-textinputedittext

4
推荐指数
1
解决办法
4955
查看次数

使用自动完成时 TextInputLayout 背景颜色更改

我做了一个登录活动(使用 Android studios 自动登录活动)。这是用于电子邮件视图输入的小部件:

 <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/Autocomplete"
            android:textColorHint="#fff">

            <AutoCompleteTextView
                android:id="@+id/email"
                android:textColor="#fff"
                android:theme="@style/Autocomplete"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/prompt_email"
                android:inputType="textEmailAddress"
                android:maxLines="1"
                android:shadowColor="#fff"
                android:singleLine="true" />

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

这是样式:

 <style name="Autocomplete">
    <item name="colorControlNormal">#fff</item>
    <item name="colorControlActivated">#fff</item>
</style>
Run Code Online (Sandbox Code Playgroud)

看起来不错。当单击电子邮件编辑文本时,android 会给我建议的电子邮件,当我单击它时,它会自动填写电子邮件和密码。这很棒。但是,在自动填充发生后,背景颜色会自动更改为淡色。我怎么能阻止这个?

非常感谢。

附上图片:

在此处输入图片说明

在此处输入图片说明

当您单击建议的电子邮件时,会发生这种情况:

在此处输入图片说明

但它应该是这样的:

在此处输入图片说明

这是活动:

    package com.alarm.reuven.beyoung.SignInActivity;

import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.annotation.TargetApi;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.support.annotation.NonNull;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.app.LoaderManager.LoaderCallbacks;

import android.content.CursorLoader;
import android.content.Loader;
import android.database.Cursor;
import android.net.Uri;
import android.os.AsyncTask;

import android.os.Build;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.text.TextUtils;
import android.util.Log;
import android.view.KeyEvent;
import …
Run Code Online (Sandbox Code Playgroud)

android autocomplete android-textinputedittext

4
推荐指数
1
解决办法
1866
查看次数

在 TextInputEditText android 上不触发 onClick 事件

我有以下 TextInputEditText

<com.google.android.material.textfield.TextInputLayout
            android:focusableInTouchMode="true"
            android:id="@+id/from_textinput"
            style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="8dp"
            android:fontFamily="sans-serif"
            android:hint="@string/from"
            android:textColor="@color/colorDarkGrey"
            android:textColorHint="@color/colorDarkGrey"
            android:textSize="12sp"
            android:textStyle="normal"
            android:visibility="gone"
            app:boxCornerRadiusBottomEnd="5dp"
            app:boxCornerRadiusBottomStart="5dp"
            app:boxCornerRadiusTopEnd="5dp"
            app:boxCornerRadiusTopStart="5dp"
            app:boxStrokeColor="@color/colorPrimary"
            app:boxStrokeWidth="3dp"
            app:layout_constraintEnd_toStartOf="@+id/to_textinput"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/doNotDisturbCheckBox">

            <com.google.android.material.textfield.TextInputEditText
                android:onClick="@{() -> viewModel.openFromTimePickerClicked()}"
                android:focusableInTouchMode="true"
                android:id="@+id/from_textedit"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:editable="false"
                android:text="@{viewModel.doNotDisturbFrom}"
                android:textSize="16sp" />

        </com.google.android.material.textfield.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

第一次触摸没有触发onClick的问题,只有在我第二次按下时才会调用

第一次点击使其聚焦第一次点击触发 onClick

谁能告诉我如何从第一次触发点击

android onclick onclicklistener android-textinputedittext

4
推荐指数
1
解决办法
1703
查看次数

在合并布局根标签的自定义视图中应用样式

我有一个TextInputLayout需要大量重用的自定义样式,因此我尝试将其转换为自定义视图。

这是要重用的 xml:

<com.google.android.material.textfield.TextInputLayout
        style="@style/TextInputLayoutAppearance"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <com.google.android.material.textfield.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

    </com.google.android.material.textfield.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

TextInputLayoutAppearance是我在中创建的自定义样式styles.xml

这是我的自定义视图的类:

 class OutlinedTextInput @JvmOverloads constructor(
    context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : TextInputLayout(context, attrs, defStyleAttr) {

    init {
        LayoutInflater.from(context).inflate(R.layout.view_outlined_textinput, this, true)
    }
}
Run Code Online (Sandbox Code Playgroud)

这是view_outlined_textinput我根据上面的原始 xml 改编的,用于自定义视图:

<merge xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    tools:parentTag="com.google.android.material.textfield.TextInputLayout">

    <com.google.android.material.textfield.TextInputEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</merge>
Run Code Online (Sandbox Code Playgroud)

这里有件事需要注意:

  1. 布局使用合并标签来避免视图层次结构中的冗余视图。

  2. 应用自定义样式至关重要。使用 style= 语法在原始 xml 中应用样式。但是,由于合并标签用于自定义视图,因此无法以这种方式完成。

我尝试按如下方式设置样式,但没有成功:

class OutlinedTextInput @JvmOverloads constructor(
    context: Context, attrs: AttributeSet? = …
Run Code Online (Sandbox Code Playgroud)

android-custom-view android-layout android-styles android-textinputlayout android-textinputedittext

4
推荐指数
1
解决办法
1165
查看次数

Android:如何默认显示TextInputLayout的suffixText?

我正在使用最新版本的android材料设计库(1.2.0-alpha05)。我在 TextInputLayout 中添加了app:suffixText="PlaceHolder"。我希望默认显示suffixText ,但目前,仅当 TextInputLayout 获得焦点时它才可见。当 TextInputLayout 失去焦点时,我看不到 suffixText。这是我的代码-:

<com.google.android.material.textfield.TextInputLayout
android:id="@+id/textField"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
app:suffixText="PlaceHolder"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:hint="hint">

         <com.google.android.material.textfield.TextInputEditText android:layout_width="match_parent"
android:layout_height="wrap_content" />

</com.google.android.material.textfield.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

当我启动 Activity 时,我看不到 TextInputLayout 的后缀文本

只有点击TextInputEditText后,我才能看到后缀文本

请告诉我,如何默认显示后缀文本。

android android-layout material-design android-textinputlayout android-textinputedittext

3
推荐指数
1
解决办法
1925
查看次数