AppCompat 视图与普通 Android 视图之间的区别

Difference between an AppCompat view and a normal Android view

AppCompat 视图组件和 standard/default 视图组件有什么区别?

例如,AppCompatEditTextEditText 之间的差异,或者 AppCompatButtonButton 之间的差异。

查看 developer docs for android.support.v7.widgetAppCompat 视图组件被描述为“tint aware”,但这是唯一的区别吗,究竟是什么这行吗?

当您使用 ButtonEditText 时,您实际上使用的是 AppCompatButtonAppCompatEditText。来自AppCompatEditText.

的官方文档

A tint aware EditText. This will automatically be used when you use EditText in your layouts. You should only need to manually use this class when writing custom views

What is the difference between an AppCompat view component and a standard/default view component?

AppCompat 视图组件支持旧版本平台的兼容功能。

the AppCompat view components are described as "tint aware", but is this the only difference, and what exactly does this do?

尽管大多数 AppCompatView 的唯一区别是它允许动态色调和背景色调。 Tint aware 并不是唯一的区别,每个 AppCompatView 都有自己的区别,例如。

  • AppCompatEditText 与 EditText

最多允许 Gingerbread 的 textAllCaps 样式属性。

  • AppCompatSpinner 与 Spinner

使用 popupTheme 设置弹出主题。

您可以在 Android docs 中挖掘每个视图差异。

但是,正如 Sid / Docs 所说,您不必在布局上指定它,因为它会自动转换为 AppCompat 视图。但是,如果你想创建自定义视图,你应该使用 AppCompat Views,否则 会发生。

好吧,我注意到的区别之一是,为了更改普通按钮的背景,您必须修改 XML(到 NoActionBar.. android:theme="@style/Theme.AppCompat.Light.NoActionBar" 到 android:theme="@style/Theme.MaterialComponents.DayNight.NoActionBar"

无论我想说的是,与 AppCompat 版本相比,使用按钮更难。

所以使用 androidx.appcompat.widget.AppCompatButton 在某种程度上被认为是好的,因为使用 androidx 库可以避免很多小问题。