【问题标题】:Android SDK's Button is replaced by MaterialButton when I changed my App Theme to a Material Theme当我将 App Theme 更改为 Material Theme 时,Android SDK 的 Button 被 MaterialButton 取代
【发布时间】:2019-07-11 04:14:22
【问题描述】:

当我将应用程序的主题更改为 Material 主题(即 Theme.MaterialComponents.* 包中可用的主题之一)以使用 MaterialButton 组件时,我不再能够使用 Android SDK 的 Button当我在布局文件中简单地使用<Button> 标签时。当我单击 <Button> 标签时,Android Studio 会将我导航到 android.widget.Button 类。但是当我点击<com.google.android.material.button.MaterialButton> 标签时,Android Studio 会将我导航到com.google.android.material.button.MaterialButton 类。所以问题是我可以安全地使用<Button> 标签而不是<com.google.android.material.button.MaterialButton> 标签吗?

【问题讨论】:

  • “安全”是什么意思?当您使用 <Button> 元素时,材质组件使用的 LayoutInflater 将创建 MaterialButton 对象,就像 AppCompat LayoutInflater 将为您的 <Button> 创建一个 AppCompatButton 一样。那么,您对“安全”的定义是什么?
  • 我的意思是<Button>标签的用法和另一个完全一样吗?官方文档中的示例和其他一些示例也明确使用 <com.google.android.material.button.MaterialButton> 标签而不是 <Button> 标签,尽管主题已经更新为 Material Components 使用的 Material 主题。
  • 不会完全一样,因为Material Components(和AppCompat)支持额外的属性(例如,以app为前缀)。
  • 您可以将此评论作为答案发布,这样我就可以将其标记为问题的答案,以便其他人直接识别答案。

标签: android android-studio android-layout material-design androidx


【解决方案1】:

我的意思是tag的用法和其他的完全一样吗?

总的来说,是的。材质组件LayoutInflater 可能支持附加的app: 前缀属性,就像AppCompat 一样。而且,Material Components 可能会忽略一些普通的Button 荣誉的属性。但是您的应用程序不应因为您使用 <Button> 作为元素而崩溃。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 2019-01-20
    • 2021-05-20
    • 2013-08-10
    • 1970-01-01
    • 2018-10-06
    相关资源
    最近更新 更多