如何在theme.xml中设置TextInputEditText的字体?
How to set the font of TextInputEditText in theme.xml?
我想将 font
应用到多个 TextInputEditTexts
共同使用的样式。
但是parent
里面有TextInputLayout
,但是找不到TextInputEditText
。
(即使将字体应用于TextInputLayout
,TextInputEditText
的字体也不会改变)。
TextInputEditText不能继承吗?
我应该只扩展 EditText 来定义样式吗?
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="SignInEditTextStyle" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:minWidth">245dp</item>
<item name="android:maxWidth">488dp</item>
</style>
</resources>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/login_pwd"
style="@style/LogInEditTextStyle"
android:layout_marginTop="100dp"
android:hint="PWD"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/login_id">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</com.google.android.material.textfield.TextInputLayout>
查看 TextInputEditText
的源代码,您要查找的“父级”样式似乎名为 Widget.Design.TextInputEditText
:
ThemeEnforcement.obtainStyledAttributes(
context,
attrs,
R.styleable.TextInputEditText,
defStyleAttr,
R.style.Widget_Design_TextInputEditText); // <--- this style
或者,您可以利用“默认样式属性”:
public TextInputEditText(@NonNull Context context, @Nullable AttributeSet attrs) {
this(context, attrs, R.attr.editTextStyle);
}
您可以创建自己选择的样式,然后在 activity 的主题中引用它:
<style name="YourActivityTheme">
<item name="editTextStyle">@style/YourEditTextStyle</item>
</style>
<style name="YourEditTextStyle">
<item name="android:minWidth">245dp</item>
<item name="android:maxWidth">488dp</item>
</style>
我想将 font
应用到多个 TextInputEditTexts
共同使用的样式。
但是parent
里面有TextInputLayout
,但是找不到TextInputEditText
。
(即使将字体应用于TextInputLayout
,TextInputEditText
的字体也不会改变)。
TextInputEditText不能继承吗?
我应该只扩展 EditText 来定义样式吗?
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="SignInEditTextStyle" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:minWidth">245dp</item>
<item name="android:maxWidth">488dp</item>
</style>
</resources>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/login_pwd"
style="@style/LogInEditTextStyle"
android:layout_marginTop="100dp"
android:hint="PWD"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/login_id">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</com.google.android.material.textfield.TextInputLayout>
查看 TextInputEditText
的源代码,您要查找的“父级”样式似乎名为 Widget.Design.TextInputEditText
:
ThemeEnforcement.obtainStyledAttributes(
context,
attrs,
R.styleable.TextInputEditText,
defStyleAttr,
R.style.Widget_Design_TextInputEditText); // <--- this style
或者,您可以利用“默认样式属性”:
public TextInputEditText(@NonNull Context context, @Nullable AttributeSet attrs) {
this(context, attrs, R.attr.editTextStyle);
}
您可以创建自己选择的样式,然后在 activity 的主题中引用它:
<style name="YourActivityTheme">
<item name="editTextStyle">@style/YourEditTextStyle</item>
</style>
<style name="YourEditTextStyle">
<item name="android:minWidth">245dp</item>
<item name="android:maxWidth">488dp</item>
</style>