我正在尝试使用最新的android.support.design.widget.TextInputLayout
功能在Android中获取floating labels。
通过查看documentation,您似乎应该将EditText
与android: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>
答案 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。
比它对您有用...