Android材质文本输入布局样式OutlinedBox不工作



我使用样式为OutlinedBox 的Material TextInputLayout

@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox

当启动模拟器";不幸的是,已停止">

implementation 'com.google.android.material:material:1.2.0'

<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="15dp"
android:paddingRight="15dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Username"
android:inputType="text" />
</com.google.android.material.textfield.TextInputLayout>

错误运行活动日志

E/AndroidRuntime:致命异常:main流程:com.mcic.drawer,PID:8832java.lang.RuntimeException:无法启动活动ComponentInfo{com.mcic.drawer/com.mcic.derawer.MainActivity}:android.view.InflateException:二进制XML文件行#19:膨胀类com.google.android.material.textfield.TextInputLayout时出错在android.app.ActivityThread.performLaunchActivity(ActivityThreads.java:2325)在android.app.ActivityThread.handleLaunchActivity(ActivityThreads.java:2387)在android.app.ActivityThread.access上$800(ActivityThreads.java:151)在android.app.ActivityThread$H.handleMessage(ActivityThreads.java:1303)在android.os.Handler.dispatchMessage(Handler.java:102)在android.os.Looper.loop(Looper.java:135)在android.app.ActivityThread.main(ActivityThreads.java:5254)位于java.lang.reflect.Method.ioke(本机方法)位于java.lang.reflect.Method.ioke(Method.java:372)网址:com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)网址:com.android.internal.os.ZygoteInit.main(ZygoteNit.java:698)引起原因:android.view.InflateException:二进制XML文件行#19:膨胀类com.google.android.material.textfield.TextInputLayout时出错在android.view.LayoutInflater.createView(LayoutInflater.java:633)在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)在android.view.LayoutInflater.rInflate(LayoutInflater.java:806)在android.view.LayoutInflater.inflature(LayoutInflater.java:504)在android.view.LayoutInflater.inflature(LayoutInflater.java:414)在android.view.LayoutInflater.inflature(LayoutInflater.java:365)位于androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDeleateImpl.java:696)位于androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:170)网址:com.mcic.drawer.MainActivity.onCreate(MainActivity.kt:9)在android.app.Activity.performCreate(Activity.java:5990)在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)在android.app.ActivityThread.performLaunchActivity(ActivityThreads.java:2278)在android.app.ActivityThread.handleLaunchActivity(ActivityThreads.java:2387)在android.app.ActivityThread.access上$800(ActivityThreads.java:151)在android.app.ActivityThread$H.handleMessage(ActivityThreads.java:1303)在android.os.Handler.dispatchMessage(Handler.java:102)在android.os.Looper.loop(Looper.java:135)在android.app.ActivityThread.main(ActivityThreads.java:5254)位于java.lang.reflect.Method.ioke(本机方法)位于java.lang.reflect.Method.ioke(Method.java:372)网址:com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)网址:com.android.internal.os.ZygoteInit.main(ZygoteNit.java:698)引起原因:java.lang.reflect.InvocationTargetException位于java.lang.reflect.Constructure.newInstance(本机方法)位于java.lang.reflect.Constructure.newInstance(Constructor.java:288)在android.view.LayoutInflater.createView(LayoutInflater.java:607)在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)在android.view.LayoutInflater.rInflate(LayoutInflater.java:806)在android.view.LayoutInflater.inflature(LayoutInflater.java:504)在android.view.LayoutInflater.inflature(LayoutInflater.java:414)在android.view.LayoutInflater.inflature(LayoutInflater.java:365)位于androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDeleateImpl.java:696)位于androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:170)网址:com.mcic.drawer.MainActivity.onCreate(MainActivity.kt:9)在android.app.Activity.performCreate(Activity.java:5990)在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)在android.app.ActivityThread.performLaunchActivity(ActivityThreads.java:2278)在android.app.ActivityThread.handleLaunchActivity(ActivityThreads.java:2387)在android.app.ActivityThread.access上$800(ActivityThreads.java:151)在android.app.ActivityThread$H.handleMessage(ActivityThreads.java:1303)在android.os.Handler.dispatchMessage(Handler.java:102)在android.os.Looper.loop(Looper.java:135)在android.app.ActivityThread.main(ActivityThreads.java:5254)位于java.lang.reflect.Method.ioke(本机方法)位于java.lang.reflect.Method.ioke(Method.java:372)网址:com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)网址:com.android.internal.os.ZygoteInit.main(ZygoteNit.java:698)由:java.lang.IollegalArgumentException引起:此组件上的样式要求应用程序主题为theme.MaterialComponents(或子代)。网址:com.google.android.material.internal.ThemeEnforcement.checkTheme(ThemeEncement.java:248)网址:com.google.android.material.internal.ThemeEnforcement.checkMaterialTheme(ThemeEncement.java:222)网址:com.google.android.material.internal.ThemeEnforcement.checkCompatibleTheme(ThemeEncement.java:150)网址:com.google.android.material.internal.ThemeEnforcement.ugetableIntedStyledAttributes(ThemeEncement.java:120)网址:com.google.android.material.textfield.TextInputLayout.(TextInputLayout.java:424)网址:com.google.android.material.textfield.TextInputLayout.(TextInputLayout.java:396)位于java.lang.reflect.Constructure.newInstance(本机方法)位于java.lang.reflect.Constructure.newInstance(Constructor.java:288)在android.view.LayoutInflater.createView(LayoutInflater.java:607)在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)在android.view.LayoutInflater.rInflate(LayoutInflater.java:806)在android.view.LayoutInflater.inflature(LayoutInflater.java:504)在android.view.LayoutInflater.inflature(LayoutInflater.java:414)在android.view.LayoutInflater.inflature(LayoutInflater.java:365)位于androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDeleateImpl.java:696)位于androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:170)网址:com.mcic.drawer.MainActivity.onCreate(MainActivity.kt:9)在android.app.Activity.performCreate(Activity.java:5990)在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)在android.app.ActivityThread.performLaunchActivity(ActivityThreads.java:2278)在android.app.ActivityThread.handleLaunchActivity(ActivityThreads.java:2387)在android.app.ActivityThread.access上$800(ActivityThreads.java:151)在android.app.ActivityThread$H.handleMessage(ActivityThreads.java:1303)在android.os.Handler.dispatchMessage(Handler.java:102)在android.os.Looper.loop(Looper.java:135)在android.app.ActivityThread.main(ActivityThreads.java:5254)位于java.lang.reflect.Method.ioke(本机方法)位于java.lang.reflect.Method.ioke(Method.java:372)网址:com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)网址:com.android.internal.os.ZygoteInit.main(ZygoteNit.java:698)

如果您查看运行输出,您将看到:

此组件上的样式要求您的应用程序主题主题材料成分

因此,我们可以更改从Theme.MaterialComponents:继承的应用程序主题

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

详细的解释在这里。

最新更新