MaterialButton和简单Button之间有什么区别吗

MaterialButton和简单Button之间有什么区别吗

本文介绍了MaterialButton和简单Button之间有什么区别吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

限时删除!!

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

If I set Theme.MaterialComponents.Light as my main theme, will be any difference between these two buttons if I use them in an xml layout?

<Button />

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

如我所见,它们的行为均与MaterialButtons相同.如果要获取旧的普通按钮的行为,则必须使用:

As I saw they behave both as MaterialButtons.If I want to get the behavior of the old plain button, I have to use:

<androidx.appcompat.widget.AppCompatButton />

提前谢谢!

推荐答案

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

If you are using a MaterialComponents Theme there is no difference between <Button /> and <com.google.android.material.button.MaterialButton />.

启用了自动充气,该将在运行时用<com.google.android.material.button.MaterialButton替换 <Button.

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

The MaterialComponentsViewInflater replaces some framework widgets with Material Components ones at inflation time, provided if a MaterialComponents theme is in use.
Something similar happens also with AppCompat (you can check that MaterialComponentsViewInflater extends AppCompatViewInflater).

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

It means that, the <Button is replaced <com.google.android.material.button.MaterialButton at runtime, if you are using a MaterialComponents Theme.

这是一个选择,但不是必须的.
这取决于您要实现的目标.您还可以配置自定义样式,因为Widget.MaterialComponents.Button样式是由Widget.AppCompat.Button样式继承的.

It is an option, but not necessarily.
It depends by what you want to achieve. You can also config a custom style since the Widget.MaterialComponents.Button style inherits by Widget.AppCompat.Button style.

区别在于:

<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>

这篇关于MaterialButton和简单Button之间有什么区别吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

1403页,肝出来的..

09-06 19:24