我试图在我的编辑文本下显示错误,就像在Material设计中使用的那样:
<android.support.design.widget.TextInputLayout
android:id="@+id/login_login_input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:theme="@style/TextLabel">
<android.support.design.widget.TextInputEditText
android:id="@+id/login_login_input_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/login_edit_text_background"
android:drawableEnd="@drawable/icone_info"
android:drawablePadding="2dp"
android:hint="@string/login"
android:imeOptions="actionNext"
android:maxLines="1"
android:textColor="@color/colorGray"
android:textSize="12sp" />
</android.support.design.widget.TextInputLayout>
我已尝试使用loginInputText.setError("error");
和
loginInputLayout.setError("error");
它似乎不起作用,我已经在堆栈中看到我需要实现:
loginInputLayout.setErrorEnabled(true);
但每当我尝试使用它时,我都会收到此错误(当我尝试单独使用setError
时出现同样的错误:
FATAL EXCEPTION: main
Process: 475, PID: 9466
android.view.InflateException: Binary XML file line #17: Error inflating class TextView
修改
我通过以下方式获取logininputlayout和logininputtext:
loginInputText = (TextInputEditText) findViewById(R.id.login_login_input_text);
EDIT2:
所有的依赖都在那里:
compile 'com.android.support:appcompat-v7:27.0.0'
compile 'com.android.support:design:27.0.0'
编辑3:
一旦我添加app:errorEnabled
我就会收到此错误:
android.view.InflateException: Binary XML file line #83: Error inflating class android.support.design.widget.TextInputLayout
编辑4:
我的应用主题已使用android:theme="@style/Theme.AppCompat"
,我的活动也会继承AppCompatActivity
编辑5:
如果我尝试使用普通EditText
我会收到此错误:android.view.InflateException: Binary XML file line #17: Error inflating class TextView
编辑6:
这是我布局的主题:
<style name="TextLabel" parent="TextAppearance.AppCompat">
<item name="android:textColorHint">@color/colorLoginGray</item>
<item name="android:textSize">16sp</item>
<item name="colorAccent">@color/colorLoginBlack</item>
<item name="colorControlNormal">@color/colorTextInputGray</item>
<item name="colorControlActivated">@color/colorLoginBlack</item>
</style>
编辑7: 的解决方案
添加第二个主题并从AppCompat
扩展主题:
<style name="TextLabel" parent="Theme.AppCompat">
<!-- Hint color and label color in FALSE state -->
<item name="android:textColorHint">@color/colorLoginGray</item>
<item name="android:textSize">16sp</item>
<!-- Label color in TRUE state and bar color FALSE and TRUE State -->
<item name="colorAccent">@color/colorLoginBlack</item>
<item name="colorControlNormal">@color/colorTextInputGray</item>
<item name="colorControlActivated">@color/colorLoginBlack</item>
</style>
<style name="TextLabelError" parent="Theme.AppCompat">
<item name="android:textColor">@color/errorRed</item>
</style>
并在xml中:
<android.support.design.widget.TextInputLayout
android:id="@+id/login_login_input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:theme="@style/TextLabel"
app:errorTextAppearance="@style/TextLabelError"
>
答案 0 :(得分:2)
试试这个
<android.support.design.widget.TextInputLayout
android:id="@+id/text_input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:errorEnabled="true">
<android.support.design.widget.TextInputEditText
android:id="@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter your name" />
</android.support.design.widget.TextInputLayout>
和
TextInputLayout til = (TextInputLayout) findViewById(R.id.text_input_layout);
til.setError("Text");
答案 1 :(得分:1)
TextInputLayout
<android.support.design.widget.TextInputLayout
android:id="@+id/userPasswordTIL"
android:layout_width="match_parent"
android:layout_height="55dp"
android:layout_marginTop="5dp"
android:clipToPadding="false"
android:gravity="bottom"
android:paddingTop="4dp"
android:theme="@style/Theme.AppCompat"
android:textColorHint="@color/white"
>
<EditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="bottom"
android:hint="Password"
android:inputType="textPassword"
android:maxLength="10"
android:paddingLeft="17dp"
android:paddingRight="17dp"
android:paddingTop="8dp"
android:singleLine="true"
android:textColor="@color/white"
android:textColorHint="@color/white"
/>
</android.support.design.widget.TextInputLayout>
然后
userPasswordTIL = (TextInputLayout) findViewById(R.id.userPasswordTIL);
userPasswordTIL.setError("Required"); #1 pic result
OR
userPasswordTIL.getEditText().setError("Required"); #2 pic result