Кнопка переключения пароля на TextInputEditText исчезает после щелчка в библиотеке поддержки 25.1.0

У меня есть TextInputEditText в сочетании с TextInputLayout с android:inputType="textPassword", используя app:passwordToggleEnabled="true", чтобы показать кнопку переключения пароля в TextInputEditText, как на следующем изображении:

пример кнопки переключения пароля
Проблема в том, как только я нажимаю кнопку переключения пароля, она исчезает навсегда.
В com.android.support:design:24.2.0 версии это работало хорошо.

я пропустил что-то новое? это ошибка?

Некоторые настройки проекта Gradle:
minSdkVersion 17
targetSdkVersion 25
compile 'com.android.support:support-v4:25.1.0'
compile '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 (Marshmallow).

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>

Если я использую app:passwordToggleDrawable с пользовательским рисунком в 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>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="colorControlNormal">@color/colorControlNormal</item>

    <item name="searchViewStyle">@style/AppTheme.MySearchViewStyle</item>
</style>

person MiguelHincapieC    schedule 02.01.2017    source источник
comment
Я пробовал тот же код, и он работает. Пожалуйста, проверьте тему, использованную один раз.   -  person Android Geek    schedule 03.01.2017
comment
@AndroidGeek Я пробовал без android:theme="@style/TextLabelGray" и обнаружил, что кнопка не исчезает, она просто стала прозрачной, потому что я все еще могу нажать ее и скрыть/показать пароль. Пробовал с черным фоном, но результат тот же. Есть идеи?   -  person MiguelHincapieC    schedule 03.01.2017
comment
Играя с TextInputLayout , я обнаружил это: если я использую пользовательский рисунок в app:passwordToggleDrawable с app:passwordToggleContentDescription, кнопка не исчезает   -  person MiguelHincapieC    schedule 03.01.2017
comment
Без theme="@style/TextLabelGray" работает нормально. Поэтому, чтобы помочь вам, нам нужно увидеть эту тему.   -  person Divers    schedule 03.01.2017
comment
@AndroidGeek добавил.   -  person MiguelHincapieC    schedule 03.01.2017
comment
Я скомпилировал его с помощью com.android.support:design:24.2.0, и он работает как шарм... так что я почти уверен, что это ошибка :S   -  person MiguelHincapieC    schedule 03.01.2017
comment
проклинать! это ошибка смотрите эту ссылку xD   -  person MiguelHincapieC    schedule 03.01.2017


Ответы (3)


изменить файл gradle, следуя зависимости

compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:design:25.3.1'
compile 'com.android.support:support-v4:25.3.1'

В файле xml добавьте следующие строки для кнопки переключения в поле пароля.

 <android.support.design.widget.TextInputLayout
 android:id="@+id/text_input_layout_password"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_marginTop="10dp"
 app:passwordToggleEnabled="true">

          <android.support.design.widget.TextInputEditText
          android:id="@+id/text_input_edit_text_password"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:hint="Enter Password"
          android:imeActionId="@+id/login"
          android:imeActionLabel="Login"
          android:imeOptions="actionUnspecified"
          android:inputType="textPassword"
          android:maxLines="1"
          tools:text="password" />

 </android.support.design.widget.TextInputLayout>
person Khyati Fatania    schedule 17.08.2017
comment
Привет, спасибо за ответ, но я думаю, вам нужно проверить это на более реальных устройствах, потому что это ошибка. Взгляните на следующую ссылку. Это та же ссылка, которую я разместил в вопросе. - person MiguelHincapieC; 17.08.2017

Добавлять

<item name="passwordToggleDrawable">@drawable/design_password_eye</item>
<item name="passwordToggleTint">@color/design_tint_password_toggle</item>
<item name="passwordToggleContentDescription">@string/password_toggle_content_description</item>

в вашем стиле TextLabelGray, и он снова покажет кнопку переключения.

person Nitesh Shrivas    schedule 06.04.2018
comment
если он работает во всех версиях (26, 25, 24...), вы должны опубликовать его на официальной странице выпуска. :D - person MiguelHincapieC; 06.04.2018

Этот код работает нормально:

  <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="16sp"
            app:passwordToggleEnabled="true"
            style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">

            <android.support.design.widget.TextInputEditText
                android:id="@+id/password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/prompt_password"
                android:imeActionId="6"
                android:inputType="textPassword"
                android:maxLines="1"
                android:fontFamily="@font/product_regular"
                android:singleLine="true" />

        </android.support.design.widget.TextInputLayout>


android {
compileSdkVersion 28
defaultConfig {
    applicationId "com"
    minSdkVersion 24
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

buildToolsVersion '28.0.2'

}

implementation 'com.android.support:exifinterface:28.0.0-rc02' 
implementation 'com.android.support:support-v4:28.0.0-rc02'
implementation 'com.android.support:support-v13:28.0.0-rc02'
implementation 'com.android.support:design:28.0.0-rc02'
implementation 'com.android.support:cardview-v7:28.0.0-rc02'
implementation 'com.android.support:recyclerview-v7:28.0.0-rc02'
person Miguel Angel Muñoz    schedule 14.09.2018