我正在使用设计库中的新TextInputLayout。我可以让它显示并更改浮动标签的颜色。不幸的是,它不会将文本更改为大写。
我不想更改我的strings.xml ,因为我只希望这个标签是大写的。我尝试在布局,样式和编程方式中更改textAllCaps,但EditText提示的情况总是与strings.xml完全一致。
这是我的TextInputLayout和EditText的XML
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android.support.design:hintTextAppearance="@style/TextInputLayout">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/city"
android:textColorHint="@color/black"
android:hint="@string/city" />
</android.support.design.widget.TextInputLayout>
这是我用于TextInputLayout的样式(我尝试使用唯一的“textAllCaps”(没有“android:”)属性,但没有为我做任何事情):
<style name="TextInputLayout" parent="@android:style/TextAppearance">
<item name="android:textAllCaps">true</item>
</style>
答案 0 :(得分:1)
该解决方案与@Janvi几乎相同,但是由BindingAdapter解决,该适配器可以在xml中代替代码使用:
@BindingAdapter("android:hint")
fun setTextInputLayoutHint(textInputLayout: TextInputLayout, hint: CharSequence?) {
textInputLayout.hint = hint?.toString()?.toUpperCase()
}
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/til_first_name"
android:hint="@{@string/first_name}"
PS:
提示应该在TextInputLayout上设置,而不是在TextInputEditText或EditText上设置。 https://material.io/develop/android/components/text-input-layout/
答案 1 :(得分:-1)
当我们使用TextInputLayout时,editext和TextInputLayout的提示都是相同的。
在.xml中删除编辑文档中的android:hint="@string/city"
,因为我们以编程方式设置提示,此处将ID添加到TextInputLayout 。
显示如下: -
<android.support.design.widget.TextInputLayout
android:id="@+id/tlName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android.support.design:hintTextAppearance="@style/TextInputLayout">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/city"
android:textColorHint="@color/black />
</android.support.design.widget.TextInputLayout>
在你的java文件中,
TextInputLayout tlName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tlName =(TextInputLayout) findViewById(R.id.tlName);
tlName.setHint(getResources().getString(R.string.city).toUpperCase());
}
显示截图: -