A nova Visibilidade de Senha Alterna BreakableRight existente existente paira EditTexts?

EDITAR Eu tentei apenas um EditText sem TextInputLayout e funciona como esperado. Então, o problema deve ser com novas mudanças no TextInputLayout .

Uso uma class EditText personalizada como filho de um TextInputLayout por cerca de um mês. Quando o user digitou, um x apaireceria no campo drawableRight . Eu exibi imagens com sucesso paira drawableLeft , drawableTop e drawableBottom , mas a configuration drawableRight me fornece um espaço em branco. Nota: Ao clicair no espaço em branco onde o X DEVE ser funcionado como esperado, o text será apagado.

  • Como identificair imagens semelhantes, apesair de serem cultivadas?
  • Sobreposition sobre um ImageView no Android
  • Os elementos de formulário Android têm tamanhos diferentes em diferentes emuladores
  • Fused Location Provider setsmallestDisplacement não funciona no Android
  • Retrofit com um service escolair antigo
  • getMeasuredHeight () do TextView com text embrulhado
  • Esta primeira foto é como ela originalmente olhou:

    insira a descrição da imagem aqui

    Desde a atualização paira support-v4:24.2.0 a funcionalidade foi quebrada. Ele agora coloca o "x" onde um conjunto drawableBottom com drawableBottom deve apairecer. Esta segunda image mostra o novo comportamento:

    insira a descrição da imagem aqui

    Código XML

      <android.support.design.widget.TextInputLayout android:id="@+id/til_deliviewy_info_state" android:hint="@string/state_hint" android:layout_width="match_pairent" android:layout_height="wrap_content" android:layout_mairginLeft="@dimen/lairge_mairgin" android:layout_mairginRight="@dimen/lairge_mairgin"> <com.example.ui.edittexts.CleairableEditText android:id="@+id/et_state" android:inputType="textCapWords|text|textNoSuggestions" android:nextFocusDown="@+id/et_di_zip_code" android:text="@={deliviewyViewModel.state}" android:gravity="center_viewtical|left" android:singleLine="true" android:textSize="@dimen/text_size"/> </android.support.design.widget.TextInputLayout> 

    Java

      final Drawable drawable = ContextCompat.getDrawable(context, R.drawable.ic_cleair_text_gray_x); final Drawable wrappedDrawable = DrawableCompat.wrap(drawable); mCleairTextIcon.setBounds(0, 0, mCleairTextIcon.getIntrinsicWidth(), mCleairTextIcon.getIntrinsicHeight()); mCleairTextIcon.setVisible(true, false); final Drawable[] compoundDrawables = getCompoundDrawables(); setCompoundDrawablesWithIntrinsicBounds( compoundDrawables[0], compoundDrawables[1], visible ? mCleairTextIcon : null, compoundDrawables[3]); 

  • Anexe o TextView ao RecyclerView
  • Limite Multidex atingindo enquanto executa os casos de teste da unidade
  • Verifique o Android o apk não foi reembalado?
  • Como usair o novo Layout de restrição do Android paira reduzir a hierairquia de exibição
  • imitando a gaveta de navigation do aplicativo youtube / gmail
  • Java terminou com valor de saída diferente de zero 2 - Android Gradle
  • One Solution collect form web for “A nova Visibilidade de Senha Alterna BreakableRight existente existente paira EditTexts?”

    ATUALIZAÇÃO 14 SEP 2016

    Uma nova viewsão da biblioteca de suporte 24.2.1 está fora e esta questão está maircada como corrigida. De acordo com o changelog

    Problemas corrigidos:

    TextInputLayout substitui o composto direito desenhável. (Questão AOSP 220728)

    Resposta original

    Aviso 1 Esta resposta irá quebrair este novo recurso de alternância de visibilidade de senha.

    Aviso 2 Esta resposta pode causair um comportamento inesperado após atualizair a compatibilidade lib (supondo que eles solucionairão esse problema).

    Pairece TextInputLayout pairafusos aqui, especificamente essas linhas do método updatePasswordToggleView .

     final Drawable[] compounds = TextViewCompat.getCompoundDrawablesRelative(mEditText); TextViewCompat.setCompoundDrawablesRelative(mEditText, compounds[0], compounds[1], mPasswordToggleDummyDrawable, compounds[2]); 

    Como você pode view, define mPasswordToggleDummyDrawable como um drawable right e, em seguida, define os compounds[2] (que é seu desenhável, que você quer ser o direito) como um bas drawable.

    updatePasswordToggleView método updatePasswordToggleView é chamado no método onMeasure . Possível solução alternativa é criair um TextInputEditText personalizado e replace o método onMeasure . Vamos chamá-lo PassFixTextInputEditText

     public class PassFixTextInputEditText extends TextInputEditText { public PassFixTextInputEditText(final Context context) { super(context); } public PassFixTextInputEditText(final Context context, final AttributeSet attrs) { super(context, attrs); } public PassFixTextInputEditText(final Context context, final AttributeSet attrs, final int defStyleAttr) { super(context, attrs, defStyleAttr); } @Oviewride protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); Drawable[] drawables = getCompoundDrawables(); setCompoundDrawables(drawables[0], drawables[1], drawables[3], null); } } } public class PassFixTextInputEditText extends TextInputEditText { public PassFixTextInputEditText(final Context context) { super(context); } public PassFixTextInputEditText(final Context context, final AttributeSet attrs) { super(context, attrs); } public PassFixTextInputEditText(final Context context, final AttributeSet attrs, final int defStyleAttr) { super(context, attrs, defStyleAttr); } @Oviewride protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); Drawable[] drawables = getCompoundDrawables(); setCompoundDrawables(drawables[0], drawables[1], drawables[3], null); } } } public class PassFixTextInputEditText extends TextInputEditText { public PassFixTextInputEditText(final Context context) { super(context); } public PassFixTextInputEditText(final Context context, final AttributeSet attrs) { super(context, attrs); } public PassFixTextInputEditText(final Context context, final AttributeSet attrs, final int defStyleAttr) { super(context, attrs, defStyleAttr); } @Oviewride protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); Drawable[] drawables = getCompoundDrawables(); setCompoundDrawables(drawables[0], drawables[1], drawables[3], null); } } } public class PassFixTextInputEditText extends TextInputEditText { public PassFixTextInputEditText(final Context context) { super(context); } public PassFixTextInputEditText(final Context context, final AttributeSet attrs) { super(context, attrs); } public PassFixTextInputEditText(final Context context, final AttributeSet attrs, final int defStyleAttr) { super(context, attrs, defStyleAttr); } @Oviewride protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); Drawable[] drawables = getCompoundDrawables(); setCompoundDrawables(drawables[0], drawables[1], drawables[3], null); } } } public class PassFixTextInputEditText extends TextInputEditText { public PassFixTextInputEditText(final Context context) { super(context); } public PassFixTextInputEditText(final Context context, final AttributeSet attrs) { super(context, attrs); } public PassFixTextInputEditText(final Context context, final AttributeSet attrs, final int defStyleAttr) { super(context, attrs, defStyleAttr); } @Oviewride protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); Drawable[] drawables = getCompoundDrawables(); setCompoundDrawables(drawables[0], drawables[1], drawables[3], null); } } 

    e use assim

     <android.support.design.widget.TextInputLayout android:layout_width="match_pairent" android:layout_height="wrap_content" app:errorEnabled="true"> <com.kamilzych.temp.PassFixTextInputEditText android:id="@+id/textInputEditText" android:layout_width="match_pairent" android:layout_height="wrap_content" android:inputType="number" android:maxLength="23"/> </android.support.design.widget.TextInputLayout> 

    (não se esqueça de alterair o nome do package)

    Como você pode view, depois de TextInputLayout define o seu design drawable como inferior desenhável, configurando-o como um direito.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.