gpt4 book ai didi

android - MaterialButton 和简单的 Button 有什么区别吗?

转载 作者:行者123 更新时间:2023-12-04 11:09:40 27 4
gpt4 key购买 nike

如果我设置 Theme.MaterialComponents.Light 作为我的主题,如果我在 xml 布局中使用这两个按钮,它们之间会有什么区别吗?

<Button />

<com.google.android.material.button.MaterialButton />

正如我所看到的,它们都表现为 MaterialButtons。
如果我想获得旧的普通按钮的行为,我必须使用:
<androidx.appcompat.widget.AppCompatButton />

提前致谢!

最佳答案

如果您使用的是 MaterialComponents 主题 没有区别 <Button />之间和 <com.google.android.material.button.MaterialButton /> .

有一个自动通货膨胀启用了将替换 <Button<com.google.android.material.button.MaterialButton在运行时。

MaterialComponentsViewInflater 在使用 MaterialComponents 主题时,在充气时用 Material Components 替换一些框架小部件。
AppCompat 也会发生类似的事情(您可以检查 MaterialComponentsViewInflater extends AppCompatViewInflater )。

这意味着,<Button被替换 <com.google.android.material.button.MaterialButton在运行时,如果您使用的是 MaterialComponents 主题。

If I want to get the behavior of the old plain button, I have to use: <androidx.appcompat.widget.AppCompatButton />.



这是一种选择,但不一定。
这取决于您想要达到的目标。您还可以配置自定义样式,因为 Widget.MaterialComponents.Button样式由 Widget.AppCompat.Button 继承风格。

It is the difference :
<style name="Widget.MaterialComponents.Button" parent="Widget.AppCompat.Button">
<item name="enforceMaterialTheme">true</item>
<item name="enforceTextAppearance">true</item>
<item name="android:textAppearance">?attr/textAppearanceButton</item>
<item name="android:textColor">@color/mtrl_btn_text_color_selector</item>
<item name="android:paddingLeft">@dimen/mtrl_btn_padding_left</item>
<item name="android:paddingRight">@dimen/mtrl_btn_padding_right</item>
<item name="android:paddingTop">@dimen/mtrl_btn_padding_top</item>
<item name="android:paddingBottom">@dimen/mtrl_btn_padding_bottom</item>
<item name="android:insetLeft">0dp</item>
<item name="android:insetRight">0dp</item>
<item name="android:insetTop">@dimen/mtrl_btn_inset</item>
<item name="android:insetBottom">@dimen/mtrl_btn_inset</item>
<item name="android:stateListAnimator" ns2:ignore="NewApi">@animator/mtrl_btn_state_list_anim</item>
<item name="cornerRadius">@null</item>
<item name="elevation">@dimen/mtrl_btn_elevation</item>
<item name="iconPadding">@dimen/mtrl_btn_icon_padding</item>
<item name="iconTint">@color/mtrl_btn_text_color_selector</item>
<item name="rippleColor">@color/mtrl_btn_ripple_color</item>
<item name="backgroundTint">@color/mtrl_btn_bg_color_selector</item>
<item name="shapeAppearance">?attr/shapeAppearanceSmallComponent</item>
</style>

关于android - MaterialButton 和简单的 Button 有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57925853/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com