TextInputLayout中“不允许使用元素EditText”

时间:2015-06-09 09:04:38

标签: android

我正在尝试使用最新的android.support.design.widget.TextInputLayout功能在Android中获取floating labels

通过查看documentation,您似乎应该将EditTextandroid:hint="myFloatingLabel"放在android.support.design.widget.TextInputLayout元素中,以便从中受益。

从功能上说,这在我测试时有效,但在Android Studio中,我会在EditText上收到警告: “这里不允许使用Element EditText” 结果(除了我有恼人的警告之外)是它打破了所有代码完成(对于字符串资源,id资源等)。

它是Android Studio错误,还是我错过了什么?

我的代码示例信息:

<?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>

8 个答案:

答案 0 :(得分:12)

尝试使用android.support.v7.widget.AppCompatEditText而不是EditText:

 <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>

我遇到了同样的问题,这对我来说很有帮助。

答案 1 :(得分:3)

尝试更改为这些版本。它对我有用。

compileSdkVersion 22
    buildToolsVersion "22.0.1"

targetSdkVersion 22

答案 2 :(得分:2)

将以下行添加到build.gradle文件中:

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

它对我有用。

答案 3 :(得分:2)

遇到这个旧问题,同时试图了解如何让TextInputEditText允许TextInputLayout在Android Studio布局预览中显示。

&#34;运行Invalidate Caches / Restart ...&#34;弗兰基D

然而,预览仍未显示,直到我将视图更改为正确链接到设计支持库为:

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

新的TextInputEditText有一些修复和很酷的功能,如https://www.journaldev.com/14748/android-textinputlayout-example

所述

答案 4 :(得分:1)

我刚刚遇到过这个问题,不仅在EditText上,还在CheckBox和Button上。最后通过运行Invalidate Caches / Restart来修复它...也许以前的一些解决方案也有效,因为它们导致缓存被清除。

答案 5 :(得分:0)

只需将android.support.design.widget.TextInputLayout替换为com.google.android.material.textfield.TextInputLayout

答案 6 :(得分:-1)

TextInputLayout是设计支持库中引入的新元素,用于在EditText中显示浮动标签。

在Android中,最基本的UI元素或小部件之一是EditText。它通常用于从用户那里获取任何类型的输入,但是缺少的是贴在它上面的标签。 https://abhiandroid.com/materialdesign/textinputlayout-floating-labels-edittext

答案 7 :(得分:-1)

使用android.support.v7.widget.AppCompatEditText更改EditText。

比它对您有用...