【发布时间】:2019-09-25 21:42:47
【问题描述】:
我需要在棒棒糖前按钮和棒棒糖后按钮中具有相同的外观,并且我正在使用colorButtonNormal 属性修改按钮颜色。
我正在为我的应用使用这个主题:<style name="AppTheme" parent="Theme.AppCompat.Light">
因为我在所有 android 版本中都需要相同的外观,所以我在 gradle 中这样做:
implementation 'com.android.support:appcompat-v7:28.0.0'
正如文档中所述,只需添加该行即可将您的 xml 布局中的所有小部件转换为这些小部件的 appcompat 版本,以在旧 android 版本中显示与现代 android 版本相同的外观。
Button 的 AppCompat 版本必须能够访问 xml 中的此属性:
<Button
app:backgroundTint="@color/unpressed2">
</Button>
但是有些事情出了问题,因为它忽略了它。如果我将该 xml 小部件强制为 AppCompat 版本,它会完美运行:
<android.support.v7.widget.AppCompatButton
app:backgroundTint="@color/unpressed2">
</android.support.v7.widget.AppCompatButton>
为什么添加实现 'com.android.support:appcompat-v7:28.0.0' 不会自动将我所有的 Button 小部件更改为 android.support.v7.widget.AppCompatButton 小部件?
【问题讨论】:
-
您使用的是 Material 主题还是 AppCompat 主题?
-
@GabrieleMariotti 我正在使用
-
@NullPointerException 当您在布局中使用 Button 并且顶级活动/对话框由 appcompat 提供时,将自动使用它。
-
@NullPointerException 您的活动是否扩展了 AppCompatActivity?
-
@RahulKhurana 再次非常感谢您!这就是问题所在。我不知道您需要使用 AppCompatActivity 才能在 xml 布局中使用 AppCompat 小部件。请在答案中发布,我会接受。
标签: android xml android-layout android-xml android-appcompat