为应用设置自定义主题时

时间:2019-05-19 16:02:49

标签: android android-styles android-textinputlayout

以下代码与大纲输入框完美配合。

<com.google.android.material.textfield.TextInputLayout
        android:id="@+id/notes"
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/text_notes"
        app:boxBackgroundColor="@color/colorWhite">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/et_notes"
            android:fontFamily="sans-serif-black"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

    </com.google.android.material.textfield.TextInputLayout>

我可以在整个应用中设置自定义字体。通过以下代码进行设置后,它崩溃了。下面的样式用于App主题。

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:textViewStyle">@style/SansSerifTextViewStyle</item>// Custom font style
    <item name="buttonStyle">@style/SanSerifButtonStyle</item> // Custom font style
</style>

当我删除以下行时,应用不会崩溃。但是概述框的用户界面还没有到来。尝试通过Java代码进行设置,但无效。

style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"

1 个答案:

答案 0 :(得分:0)

com.google.android.material.textfield.TextInputLayout(注意包装名称的.material.部分)之类的材料组件要求您使用Material主题。

此页面列出了要使用的适当主题:

https://github.com/material-components/material-components-android/blob/master/docs/getting-started.md#4-change-your-app-theme-to-inherit-from-a-material-components-theme

您必须从此更改应用的主题

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

例如这个

<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">