我在使用TextInputLayout实现材质设计时遇到了问题,我知道解决方案是让您的活动主题继承材质组件主题之一,但这会给我的大多数应用程序主题带来这样的变化,并且需要更多时间来重构它。我想要的是仅针对应用程序上的特定TextInputLayout进行材质设计。
这就是我试过的
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/firstName"
style="@style/CustomInputStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="5dp"
android:layout_weight="1"
app:errorEnabled="true">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/fname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/first_name"
android:inputType="text|textCapWords"
android:nextFocusDown="@id/lname"
android:textSize="12sp" />
</com.google.android.material.textfield.TextInputLayout>
<style name="CustomInputStyle" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
<item name="boxStrokeWidth">2dp</item>
<item name="hintTextColor">@color/colorAccent</item>
<item name="boxStrokeColor">@android:color/white</item>
<item name="android:colorAccent">@color/colorAccent</item>
<item name="android:textColorHint">@color/colorAccent</item>
</style>
错误:由以下原因引起:java。lang.IllegalArgumentException:此组件上的样式要求应用程序主题为主题。物质成分(或后代)
我们不能这样做,而不是覆盖整个应用程序/活动主题吗?我只想在特定的片段中使用它。
问题:如果您想将错误的样式应用到您的“TextInputLayout”,有时会发生这种情况。
例:在我的例子中,我尝试使用“TextInputLayout”作为下拉列表,所以在“TextInputLayout”中我放置了“AutoCompleteTextView”,在最后一个列表中,我确定了样式样式=“@style/Widget.Material3.TextInputLayout.OutlineBox.ExposedDropdownMenu”,所以它给出了上述错误。
解决方法:将样式更改为正确的样式。style=“@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu”,现在可以运行,应用程序运行正常。
之前:
style=“@style/Widget.Material3.TextInputLayout.OutlineBox.ExposedDropdownMenu”
之后:style=“@style/Widget.MaterialComponents.TextInputLayout.OutlineBox.Dense.ExposedDropdownMenu”
我只是注意到,只需将Material Components主题放在XML布局的根视图中,现在就可以毫无错误地应用样式了。
在父/根视图中添加
android:theme="@style/Theme.MaterialComponents.Bridge"
然后将样式应用于子视图TextInputLayout
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/firstName"
style="@style/CustomInputStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="5dp"
android:layout_weight="1"
app:errorEnabled="true">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/fname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/first_name"
android:inputType="text|textCapWords"
android:nextFocusDown="@id/lname"
style="@style/CustomEditText"
android:textSize="12sp" />
</com.google.android.material.textfield.TextInputLayout>
使用AppCompat并使用min sdk版本21,我尝试使用ChipDrawable在TextEdit中的电子邮件地址列表中使用,并且我使用以下方式创建了ChipDrawable: 使用这个xml: 我的主题使用(我还尝试了) 但我总是会犯这样的错误: 我尝试了我在stackoverflow上找到的所有东西,但没有多大帮助。 这是我的风格 这是我的一部分成绩
我试图做一个MaterialAlertDialog,但无论发生什么,我都会出现以下错误 我使用一个自定义主题作为我的主要活动主题,它是MaterialComponents的父级 将主题更改为AppCompat没有任何帮助,也不是真正正确的做法。我正在按照Material IO的解释进行实施https://material.io/develop/android/components/dialog/
我正在尝试使用这个图书馆https://github.com/jaiselrahman/FilePicker.当我使用以下代码启动活动时,我得到一个异常。 解决此错误的方法是使用以下主题。AppCompat,我已经有了,但仍然得到相同的错误。
我最近离开了主题。AppCompat到主题。MaterialComponents,但我不懂如何组织颜色。 例如,为什么按钮采用橙色背景颜色,但cardview的背景不采用橙色? 有人能给我解释一下关于这些变量的更多信息吗 有任何官方文件吗?
以下是我的依赖关系 我的布局。xml 上面的代码对我来说工作正常 但是当我更新
今天我尝试了新的MaterialComponents。他们的安装的一部分是,你需要改变你的应用程序的父级来继承它们。MaterialComponents。所以我这样做是因为我想使用底部导航与更好的涟漪。但在那之后,几乎所有应用程序中的按钮都变得蓬松了。 我应该怎么做才能恢复到以前的状态(右边的图像)?