J'ai une disposition très simple où j'utilise la nouvelle vue Android.support.design.widget.TextInputLayout
de Bibliothèque de support technique
<Android.support.design.widget.TextInputLayout
Android:id="@+id/til"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content">
<EditText
Android:id="@+id/textDialog"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:hint="First Name"/>
</Android.support.design.widget.TextInputLayout>
Sur gonfler je reçois une exception:
Caused by: Java.lang.RuntimeException: Failed to resolve attribute at index 18
at Android.content.res.TypedArray.getColor(TypedArray.Java:401)
at Android.support.design.widget.CollapsingTextHelper.setCollapsedTextAppearance(CollapsingTextHelper.Java:166)
at Android.support.design.widget.TextInputLayout.<init>(TextInputLayout.Java:106)
at Java.lang.reflect.Constructor.newInstance(Native Method)
at Java.lang.reflect.Constructor.newInstance(Constructor.Java:288)
at Android.view.LayoutInflater.createView(LayoutInflater.Java:607)
at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:743)
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:806)
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:504)
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:414)
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:365)
at com.Android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.Java:381)
at Android.app.Activity.setContentView(Activity.Java:2144)
at com.example.trybindinglib.MainActivity.onCreate(MainActivity.Java:24)
at Android.app.Activity.performCreate(Activity.Java:5933)
at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1105)
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2298)
at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2407)
at Android.app.ActivityThread.access$800(ActivityThread.Java:149)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1324)
at Android.os.Handler.dispatchMessage(Handler.Java:102)
at Android.os.Looper.loop(Looper.Java:211)
at Android.app.ActivityThread.main(ActivityThread.Java:5321)
at Java.lang.reflect.Method.invoke(Native Method)
at Java.lang.reflect.Method.invoke(Method.Java:372)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:1016)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:811)
Avez-vous ajouté la bibliothèque de support technique de conception? Ajoutez la dépendance:
compile 'com.Android.support:design:22.2.0'
à votre build.gradle
Si vous utilisez Theme.AppCompat
comme thème de l'application de base, définissez-y la textColorError
. TextInputLayout doit être utilisé dans ses états d'erreur. Sinon, le journal des collisions s'affichera comme indiqué ci-dessus.
Exemple:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="textColorError"> @color/design_textinput_error_color_light </item>
</style>
C'est @color/design_textinput_error_color_light
pour AppCompat.Light
et @color/design_textinput_error_color_dark
pour AppCompat.Dark
.
Assurez-vous que le thème de l'application étend le thème AppCompat.
<!-- Base application theme. -->
<style name="AppTheme" parent="@style/Theme.AppCompat">
<!-- Customize your theme here. -->
</style>
J'ai eu le même problème sur une application brute générée avec Android Studio.
Je l'ai résolu en ajoutant d'abord la dépendance suivante à mon build.gradle Compile 'com.Android.support:appcompat-v7:22.2.0'
Ensuite, j'ai dû modifier la base du thème en @ style/Theme.AppCompat comme suggéré par Aleksey. Remarquez ici que vous devrez probablement renommer votre thème de base, car il en existe un du même nom ( AppTheme ) dans la bibliothèque appcompat, et AS semble avoir été dérangé entre les deux ...
J'espère que cela t'aides!
getColor se bloque, vous pouvez essayer deux choses:
1.Au lieu d'utiliser EditText, utilisez Android.support.v7.widget.AppCompatEditText. Par exemple:
<Android.support.design.widget.TextInputLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
app:errorEnabled="true">
<Android.support.v7.widget.AppCompatEditText
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:hint="First Name"
Android:inputType="textPersonName"
Android:singleLine="true" />
</Android.support.design.widget.TextInputLayout>
2.Si cela n’aide en rien, cela pourrait peut-être, mais la couleur de votre indice sera supprimée lorsque le champ de saisie est sélectionné. Ajouter:
app:hintTextAppearance="@Android:style/TextAppearance.Small"
à votre TextInputLayout.
Assurez-vous que votre XML ressemble à:
<Android.support.design.widget.TextInputLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<EditText
Android:id="@+id/search"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:hint="search" />
</Android.support.design.widget.TextInputLayout>
exemple complet:
http://hmkcode.com/Android-textinputlayout/
Pas de changement de thème