标签: android-textinputedittext

单击支持库25.1.0后,TextInputEditText上的密码切换按钮消失

我有一个TextInputEditText结合TextInputLayoutandroid:inputType="textPassword"运用app:passwordToggleEnabled="true",以显示在密码切换按钮TextInputEditText像下一张图片:

密码切换按钮示例
问题是,一旦我按下密码切换按钮,它就永远消失了.
它在com.android.support:design:24.2.0版本中运行良好.

我错过了一些新的东西吗?这是一个错误吗?

有些项目的gradle的设置:
的minSdkVersion 17
targetSdkVersion 25
编译'com.android.support:support-v4:25.1.0'
编译'com.android.support:appcompat-v7:25.1.0'
编译"com.android.support:cardview -V7:25.1.0'
编译'com.android.support:design:25.1.0'

在2个不同的Android 6.0(棉花糖)装置运行.

XML:

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

    <android.support.design.widget.TextInputEditText
        android:id="@+id/profile_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="actionNext"
        android:imeActionLabel="@string/perfil_field_tipo_documento"
        android:textColor="@color/colorAccent"
        android:textSize="@dimen/perfil_text_view_text_size"
        android:paddingStart="15dp"
        android:paddingEnd="5dp"/>
</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

如果我使用app:passwordToggleDrawable自定义drawable,TextInputLayout它不会消失.

相关风格:

<style name="TextLabelGray" parent="TextAppearance.AppCompat">
    <!--//hint color And Label Color in False State-->
    <item name="android:textColorHint">@color/gray_text_color</item>
    <item name="android:textColorHighlight">@color/gray_text_color</item>
    <item name="android:textColorLink">@color/gray_text_color</item>
    <item name="colorAccent">@color/gray_text_color</item>
    <item name="colorControlNormal">@color/gray_text_color</item>
    <item name="colorControlActivated">@color/gray_text_color</item>
</style> …
Run Code Online (Sandbox Code Playgroud)

android android-support-library android-inputtype android-textinputedittext

6
推荐指数
1
解决办法
5227
查看次数

从子textInputEditText获取父texInputlayout

我正在实现一个功能,当提示浮动时将textInputlayout提示文本的大小写更改为大写,反之亦然.

为此,我正在使用OnFocusChangeListener它的孩子textInputEditText.为了便于实现,我正在实施View.OnFocusChangeListener我的活动,如:

public class LoginActivity extends BaseActivity implements View.OnFocusChangeListener
Run Code Online (Sandbox Code Playgroud)

并覆盖活动中的方法,如:

@Override
public void onFocusChange(View v, boolean hasFocus) {
    if(findViewById(v.getId()) instanceof TextInputEditText){
        TextInputLayout textInputLayout = (TextInputLayout) findViewById(v.getId()).getParent();
        if(hasFocus){
            textInputLayout.setHint(textInputLayout.getHint().toString().toUpperCase());
        }else{
            textInputLayout.setHint(Utility.modifiedLowerCase(textInputLayout.getHint().toString()));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的方法中,我试图textInputLayout使用该行获取父视图

TextInputLayout textInputLayout = (TextInputLayout) findViewById(v.getId()).getParent();
Run Code Online (Sandbox Code Playgroud)

上面的代码行引发致命错误

java.lang.ClassCastException:android.widget.FrameLayout无法强制转换为android.support.design.widget.TextInputLayout

它非常明显,因为它返回了Framelayout无法投入的内容textInputLayout

如果我使用

TextInputLayout textInputLayout = (TextInputLayout) findViewById(v.getId()).getRootView();
Run Code Online (Sandbox Code Playgroud)

它再次抛出一个致命的错误,因为无法投入的getRootView()回报DecorViewtextInputLayout

我的问题是如何textInputLayout从孩子那里得到父母textInputEditText

请指导.

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

6
推荐指数
1
解决办法
1908
查看次数

自定义文本输入布局

我想应用边框,TextInputLayout如图所示.

现在我已经实现了这样的.

在此输入图像描述

但是,我想如图所示跟随(即标签放在边框内).

在此输入图像描述

我实现的代码EditText如下.

<customviews.MyEditText
             android:id="@+id/email"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:background="@drawable/edittext_border_background"
             android:layout_marginEnd="30dp"
             android:layout_marginStart="30dp"
             android:layout_marginTop="45dp"
             android:gravity="start"
             android:hint="@string/hint_username"
             android:imeOptions="actionNext|actionDone"
             android:inputType="textEmailAddress|text"
             android:padding="10dp"
             android:textColor="@color/primary_text"
             android:textColorHint="@color/secondary_text"
             android:textSize="16sp"
            />
Run Code Online (Sandbox Code Playgroud)

并且,对于边框我已经应用了背景editetext_border_background.xml如下

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
android:padding="20dp">
    <solid android:color="#FFFFFF"/>
    <corners
        android:bottomRightRadius="0dp"
        android:bottomLeftRadius="0dp"
        android:topLeftRadius="0dp"
        android:topRightRadius="0dp"/>
    <stroke 
        android:width="1dip"
        android:color="@color/primary" />

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

当我尝试应用边框时,TextInputLayout它不会给出预期的输出.

在此输入图像描述

谁能帮我??

android android-textinputlayout android-textinputedittext

6
推荐指数
2
解决办法
3070
查看次数

Android EditText错误消息弹出文本未显示

我在我的应用程序中遇到问题,其中EditTexts上的错误弹出显示但文本不可见.它看起来像这样:

EditText错误消息

EditText我的应用程序中的所有s都会发生这种情况.这是一个布局XML的示例

布局:

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

<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/gradient"
    android:fitsSystemWindows="true"
    tools:context=".ui.onboarding.profile.OnboardingUserProfileActivity">
    <ImageView
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scaleType="fitXY"
        app:srcCompat="@drawable/shapes_background" />

    <ProgressBar
        android:id="@+id/login_progress"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:visibility="gone" />

    <ScrollView
        android:id="@+id/form"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginBottom="20dp">

        <LinearLayout
            android:id="@+id/linearLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="80dp"
            android:orientation="vertical">

            <android.support.constraint.ConstraintLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginTop="40dp"
                android:layout_marginBottom="20dp">

                <ImageView
                    android:id="@+id/profileImageView"
                    android:layout_width="160dp"
                    android:layout_height="160dp"
                    android:scaleType="fitXY"
                    android:src="@drawable/user_profile_placeholder"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent"/>


                <android.support.design.widget.FloatingActionButton
                    android:id="@+id/cameraImageButton"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="bottom|end"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintRight_toRightOf="parent"
                    app:srcCompat="@android:drawable/ic_menu_camera" />
            </android.support.constraint.ConstraintLayout>

            <android.support.design.widget.TextInputLayout
                android:id="@+id/firstnameTvLayout"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_marginBottom="20dp"
                android:layout_weight="0.33"
                android:textColorHint="@color/colorVeryLightGray"
                android:theme="@style/AppTheme.WhiteColorAccent" …
Run Code Online (Sandbox Code Playgroud)

android android-layout kotlin android-textinputlayout android-textinputedittext

6
推荐指数
1
解决办法
1267
查看次数

具有自定义背景的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 Talkback 在 TextInputLayout 上的错误公告

我的布局中有以下代码

\n\n
<com.google.android.material.textfield.TextInputLayout\n        android:id="@+id/tilPassword"\n        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"\n        android:layout_width="match_parent"\n        android:layout_height="wrap_content"\n        android:hint="Password"\n        app:layout_constraintEnd_toEndOf="parent"\n        app:layout_constraintStart_toStartOf="parent"\n        app:layout_constraintTop_toBottomOf="@id/tilUserName"\n        app:passwordToggleEnabled="true">\n\n        <com.google.android.material.textfield.TextInputEditText\n            android:id="@+id/tiePassword"\n            android:layout_width="match_parent"\n            android:layout_height="wrap_content"\n            android:imeOptions="actionDone"\n            android:inputType="textPassword"\n            android:selectAllOnFocus="true"\n            android:singleLine="true" />\n\n    </com.google.android.material.textfield.TextInputLayout>\n
Run Code Online (Sandbox Code Playgroud)\n\n

导航到 TextInputLayout 时 TalkBack 宣布:“密码密码编辑框”

\n\n

所需的公告:“密码编辑框”

\n\n

如果我删除其中一个,android:hint="Password"或者 android:inputType="textPassword"它会按预期工作。

\n\n

设置提示的注意事项

\n\n

提示应设置在 TextInputLayout 上,而不是 TextInputEditText 或 EditText 上。如果在 XML 中的子 EditText 上指定了提示,则 TextInputLayout 可能仍能正常工作;TextInputLayout 将使用 EditText\xe2\x80\x99s 提示作为其浮动标签。但是,以后调用修改提示将不会更新 TextInputLayout\xe2\x80\x99s 提示。为了避免意外行为,请在 TextInputLayout 上调用 setHint() 和 getHint(),而不是在 EditText 上调用。

\n

android talkback android-textinputlayout android-textinputedittext

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

如何更改Android Material TextInputLayout组件的非活动边框描边颜色

我正在尝试设置 TextInputLayout 未聚焦的边框描边颜色。同样,有太多的问题和答案,我已经尝试了所有的问题。就像创建样式并用作主题一样,创建颜色选择器并应用它,也可以直接应用 app:boxStrokeColor 和颜色选择器。但这些可用的解决方案中的任何一个都不太幸运。

不确定,我哪里做错了或者我仍然缺少什么。我将我的代码推送到github 的测试项目,以便更好地了解我的整个设置。以下是一些用于快速查看的示例代码:

Activity_main.xml(ConstraintLayout 内的 TextInputLayout)

<com.google.android.material.appbar.MaterialToolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <!-- Tried this as well - app:boxStrokeColor="@color/text_input_box_stroke_color" -->
    <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/emailTextInputLayout"
        android:hint="Email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="24dp"
        android:theme="@style/TextInputLayoutStyle"
        android:layout_marginHorizontal="24dp"
        app:layout_constraintTop_toBottomOf="@id/toolbar"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/emailTextInput"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:importantForAutofill="no"
            android:inputType="textEmailAddress" />

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

样式.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="TextInputLayoutStyle" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense">
        <item name="boxStrokeColor">#FF00CC</item>
        <item name="boxStrokeWidth">2dp</item>
    </style>
</resources>
Run Code Online (Sandbox Code Playgroud)

text_input_box_lines_color.xml(颜色选择器)

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/mtrl_textinput_focused_box_stroke_color" android:state_focused="true"/>
    <item android:color="@color/mtrl_textinput_hovered_box_stroke_color" android:state_hovered="true"/>
    <item android:color="@color/mtrl_textinput_disabled_color" android:state_enabled="false"/>
    <item android:color="@color/mtrl_textinput_default_box_stroke_color"/> …
Run Code Online (Sandbox Code Playgroud)

android android-textinputlayout android-textinputedittext material-components-android

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

在 TextInputEditText 范围中使用 ChipDrawable,如何将 clickListener 添加到 ChipDrawable CloseIcon?

我有以下场景:

芯片定义:

<chip xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:chipIcon="@drawable/ic_baseline_house_24"
    android:text="@string/chips_holder"
    app:closeIconEnabled="true"
    />
Run Code Online (Sandbox Code Playgroud)

包含 TextInputTeditText 的 xml 部分:

...
<com.google.android.material.textfield.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
    android:enabled="true"
    android:hint="Gallery Selections"
    android:layout_weight="1">
    <com.google.android.material.textfield.TextInputEditText
        android:id="@+id/fragment_gallery_text_input_edit_text_selections"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:clickable="false"
        android:cursorVisible="false"
        android:focusable="false"
        android:focusableInTouchMode="false" />
</com.google.android.material.textfield.TextInputLayout>
...

Run Code Online (Sandbox Code Playgroud)

房间 liveData 结果观察器,提供来自一组变量的数据:

...
liveDataFilterGallery?.observe(
    viewLifecycleOwner
){filterGalleryResult->
    filterGalleryResult?.let { safeFilterGalleryResult->
        safeFilterGalleryResult.apply {
            val prefixes = arrayOf(
                "Site No",
                "Farm No",
                "Site Id",
                "Assignment Id",
                "Category",
                "Time Stamp")
            fragmentGalleryTextInputEditTextSelections.setText(
                (if(siteNo.isNullOrEmpty()) "" else "${prefixes[0]} = '$siteNo';") +
                (if(farmNo.isNullOrEmpty()) "" else "${prefixes[1]} = '$farmNo';") +
                (if(siteId.isNullOrEmpty()) "" else "${prefixes[2]} …
Run Code Online (Sandbox Code Playgroud)

android drawable kotlin android-chips android-textinputedittext

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

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

如何防止/停止/禁用 android SDK EditText 暴露给应用程序类

我有一个包含 MYSDKActivity 的 SDK。在此活动布局中,我有 1 个编辑文本,用户可以在其中输入他的卡号。任何集成此 SDK 的 Android 客户端都可以在其应用程序类中使用ActivityLifecycleCallbacks并在此编辑文本上注册文本观察器,并且可以侦听用户卡号输入。

我想通过 Application 类阻止 SDK 编辑文本的使用。只有我的 SDK 可以访问此编辑文本并执行某些操作。我想阻止在我的 SDK 之外使用。

public class MyDemoApp extends Application implements Application.ActivityLifecycleCallbacks {

@Override
public void onCreate() {
    super.onCreate();
    registerActivityLifecycleCallbacks(this);
}

@Override
public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) {}

@Override
public void onActivityStarted(@NonNull Activity activity) {}

@Override
public void onActivityResumed(@NonNull Activity activity) {
    if (activity instanceof MYSDKActivity) {
        final TextInputLayout textInputLayout = activity.findViewById(R.id.my_sdk_edit_text);
        if (textInputLayout != null) {
            ViewGroup textInputLayoutViewGroup = …
Run Code Online (Sandbox Code Playgroud)

security android android-edittext android-security android-textinputedittext

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