Estou usando a Biblioteca de Suporte a Design do Android lançada recentemente para mostrar rótulos flutuantes com EditTexts. Mas estou enfrentando o problema de que a dica no EditText não é exibida quando a interface do usuário é renderizada, mas vejo a dica depois de me concentrar nos EditTexts.
Meu layout é o seguinte:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:id="@+id/ScrollView01"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin">
<android.support.design.widget.TextInputLayout
android:id="@+id/name_et_textinputlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_vertical_margin">
<EditText
android:id="@+id/FeedBackerNameET"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/feedbackname"
android:inputType="textPersonName|textCapWords" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/email_textinputlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/FeedBackerEmailET"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/feedbackemail"
android:inputType="textEmailAddress" />
</android.support.design.widget.TextInputLayout>
<Spinner
android:id="@+id/SpinnerFeedbackType"
android:layout_width="fill_parent"
android:layout_height="48dp"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:entries="@array/feedbacktypelist"
android:prompt="@string/feedbacktype" />
<android.support.design.widget.TextInputLayout
android:id="@+id/body_textinputlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/EditTextFeedbackBody"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/feedbackbody"
android:inputType="textMultiLine|textCapSentences"
android:lines="5" />
</android.support.design.widget.TextInputLayout>
<CheckBox
android:id="@+id/CheckBoxFeedBackResponse"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:text="@string/feedbackresponse" />
<Button
android:id="@+id/ButtonSendFeedback"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:text="@string/feedbackbutton" />
</LinearLayout>
</ScrollView>
</FrameLayout>
<View
android:layout_width="match_parent"
android:layout_height="5dp"
android:background="@drawable/toolbar_shadow" />
</FrameLayout>
Eu também tentei definir dicas para o TextInputLayout
método de uso, setHint
mas sem sorte.
mNameTextInputLayout = (TextInputLayout) v.findViewById(R.id.name_et_textinputlayout);
mNameTextInputLayout.setErrorEnabled(true);
mNameTextInputLayout.setHint(feedBackerNameET.getHint());
mEmailTextInputLayout = (TextInputLayout) v.findViewById(R.id.email_textinputlayout);
mEmailTextInputLayout.setErrorEnabled(true);
mEmailTextInputLayout.setHint(feedBackerEmail.getHint());
mBodyTextInputLayout = (TextInputLayout) v.findViewById(R.id.body_textinputlayout);
mBodyTextInputLayout.setErrorEnabled(true);
mBodyTextInputLayout.setHint(feedBackBody.getHint());
android
material-design
android-design-library
Shajeel Afzal
fonte
fonte
Respostas:
Atualizar:
Este é um bug que foi corrigido na versão 22.2.1 da biblioteca.
Resposta Original:
Conforme mencionado por @shkschneider, este é um bug conhecido . O usuário do Github @ ljubisa987 postou recentemente um Síntese para uma solução alternativa:
https://gist.github.com/ljubisa987/e33cd5597da07172c55d
Conforme observado nos comentários, a solução alternativa só funciona no Android Lollipop e anteriores. Não funciona no Android M Preview.
fonte
Esse é um bug conhecido da biblioteca Android Design. Foi aceito e atribuído .
Portanto, você deve corrigir isso no próximo lançamento da biblioteca de design do Android.
Nesse ínterim, você pode observar o rastreador de problemas para uma correção de hacky que pode ser postada lá, mas eu não conheço nenhuma até agora.
E sim, isso afeta apenas Lollipop e acima.
fonte
Isso funciona para mim na Design Library 23.1.1:
Defina a cor da dica nos atributos xml de TextInputLayout:
fonte
Este problema foi corrigido na versão 22.2.1
fonte
você deve usar
android.support.v7.widget.AppCompatEditText
comoEditText
e definirandroid:hint
como abaixofonte
Use este snippet de código. Certifique-se de que sua atividade seja AppCompatActivity. E a dependência também está com as versões mais recentes
Atualize o Android Studio para a versão mais recente. veja a saída aqui
fonte
Se você estiver configurando sua dica EditText programaticamente, não funcionará! Você precisa definir a dica no próprio TextInputLayout.
Aqui está o XML, caso você esteja se perguntando:
fonte
Esse problema foi resolvido na
v23.0.1
biblioteca de design de suporte. Eu também atualizei meuappcompat-v7
to23.0.1
,compileSdkVersion
to23
ebuildToolsVersion
to23.0.1
em build.gradle .fonte
Resolvi meu problema com este código:
A chave aqui é o
bringToFront
. Força oTextInputLayout
a refazer o desenho, o que não é o mesmo que fazerinvalidate()
. Se você estiver tentando exibir oTextInputLayout
em umview
que tenhaanimations
outranistions
, será necessário executar o código acima no final doanimation
outransition
. Apenas certifique-se de que o código acima seja executado na IUthread
.fonte
Parece que este problema aparece quando você define onFousListener em EditText - tente estender EditText e oferecer suporte a vários onFocusListeners
fonte
Defina a cor da dica que contraste com o fundo do EditText.
<item name="android:textColorHint">#FF424242</item>
Relacionado:
setHintTextColor () em EditText
Alterar a cor da dica EditText ao usar TextInputLayout
Como alterar a cor do rótulo flutuante de TextInputLayout
fonte
Problema resolvido: Vá para build.gradle do seu aplicativo e verifique a biblioteca de design. compile 'com.android.support:design:22.2.1' Deve ser 22.2.1 ou mais recente.
fonte
O problema é a cor da dica. Ele fica branco ao digitar algo. Por favor, mude a cor da dica ou mude a cor de fundo. Você verá a dica ao digitar.
fonte
Existe uma solução simples para isso, pois funcionou para mim
Basta adicionar android: theme = "@ style / Base.TextAppearance.AppCompat" ao TextEditLayout e deve funcionar e você pode alterar o tema conforme necessário.
fonte
Basta adicionar:
android:hint="your_hint"
paraTextInputLayout
.fonte
Eu encontrei algo diferente.
Ao definir o estilo para o
fragment
,O bug foi embora quando tentei estilos diferentes de
"Theme_DeviceDefault_Dialog"
.De uma chance.
fonte