2015-06-09 20 views
8

Ich versuche, die aktuelle android.support.design.widget.TextInputLayout Funktion zu verwenden, um floating labels in Android zu erhalten."Element EditText ist hier nicht zulässig" in einem TextInputLayout

Mit am documentation suchen scheint es, dass Sie Ihre EditText mit dem android:hint="myFloatingLabel" in einem android.support.design.widget.TextInputLayout Element setzen soll sind zu davon profitieren.

Funktionell funktioniert dies, wenn ich es testen, aber in Android Studio bekomme ich eine Warnung auf dem EditText: „Element EditText ist hier nicht erlaubt“ Die Folge (neben der Tatsache, dass ich ärgerlich Warnungen haben) ist, dass es bricht Alle Code-Vervollständigungen (für String-Ressourcen, für ID-Ressourcen usw.).

Ist es ein Fehler im Android Studio, oder habe ich etwas übersehen?

My Codebeispiel für Informationen:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingTop="@dimen/activity_vertical_margin"> 

    <android.support.design.widget.TextInputLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 

     <EditText 
      android:id="@+id/email" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:ems="10" 
      android:hint="@string/email" 
      android:inputType="textEmailAddress" /> 
    </android.support.design.widget.TextInputLayout> 

</LinearLayout> 
+0

Dies ist ein gültiges XML und ähnliches "funktioniert" gut für mich, inkl. Autovervollständigung –

+1

Ich hatte das gleiche Problem vor ein paar Tagen. Ich erinnere mich nicht an die genaue Vorgehensweise, um es zu lösen. Ich habe Android Studio aktualisiert und die letzte Version von 'buildToolsVersion' verwendet. Am Ende habe ich die Android Studio Caches ungültig gemacht – GVillani82

+0

@ Joseph82 Ich habe bereits Android Studio aktualisiert, die neuesten Build Tools Versionen verwendet (ich habe sogar mit 23 getestet.0.0 rc2), und versucht Android Studio zu invalidieren/neu zu starten, aber das Problem bleibt bestehen :( – jdebon

Antwort

4

Versuchen Sie, diese Versionen zu ändern. Es hat für mich funktioniert.

compileSdkVersion 22 
    buildToolsVersion "22.0.1" 

und

targetSdkVersion 22 
+0

Ich denke Als SDK 22 ausging, hatte ich es erneut versucht und es hat nicht funktioniert, aber ich habe es gerade jetzt nochmal versucht (mit SDK 23) und es funktioniert prima. – jdebon

8

Versuchen android.support.v7.widget.AppCompatEditText statt EditText mit:

<android.support.design.widget.TextInputLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 

    <android.support.v7.widget.AppCompatEditText 
     android:id="@+id/email" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:ems="10" 
     android:hint="@string/email" 
     android:inputType="textEmailAddress" /> 
</android.support.design.widget.TextInputLayout> 

Ich hatte das gleiche Problem, und dies hat den Job für mich.

+0

Danke, aber die offizielle Android-Dokumentation verlinkt in meinem Originalbeitrag klar gibt an, dass das 'android.support.design.widget.TextInputLayout'-Element einen' android.widget.EditText' umbrechen sollte. Ihre Lösung ist also eher eine Umgehung. – jdebon

+1

@jdebon das ist falsch Die Roid-Dokumentation besagt, dass TextInputLayout einen EditText ODER einen Nachkommen umschließt. –

+0

Das hilft mir dabei, das Gleiche für 'AutoCompleteTextView' zu tun – CrandellWS

1

fügen Sie die folgende Zeile in die Datei build.gradle:

compile 'com.android.support:design:25.3.1' 

Es funktioniert für mich.

+0

Scheint diese Bibliothek Android Studio zu verstehen, wo EditText verwendet werden kann? Aber EditText ist ziemlich Standard, daher die Frage: Warum funktioniert das? +1 – Mzn

0

Ich hatte gerade dieses Problem, nicht nur auf EditText, sondern auch auf CheckBox und Button. Schließlich wurde es durch Ausführen von Invalidate Caches/Restart ... behoben. Vielleicht funktionierten einige der vorherigen Lösungen auch, weil sie dazu führten, dass die Caches gelöscht wurden.

+0

Das ist Intellij spezifisch, du solltest es erwähnen :) – jdebon

0

Kam über diese alte Frage bei dem Versuch herauszufinden, wie TextInputEditText innerhalb TextInputLayout zu bekommen und in der Android Studio-Layout-Vorschau angezeigt werden.

Der Fehler „hier nicht erlaubt“ nach verschwunden „läuft Invalidate Caches/Restart ...“ von Frankie D erwähnt als

jedoch nach wie vor die Vorschau nicht zeigen auf, bis ich das geändert Ansicht verknüpfen, um richtig auf die Design-Unterstützung lib als:

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

der neue TextInputEditText hat ein paar Korrekturen und coole Features wie auf https://www.journaldev.com/14748/android-textinputlayout-example erklärt

Verwandte Themen