这两个对象(SwitchCompat
和 SwitchMaterial
)之间有什么区别?我已经试过它们,外观上它们是相同的。
顺便问一句,为什么他们移除了Switch
类?你知道哪个UI元素将来会替代它吗?
这两个对象(SwitchCompat
和 SwitchMaterial
)之间有什么区别?我已经试过它们,外观上它们是相同的。
顺便问一句,为什么他们移除了Switch
类?你知道哪个UI元素将来会替代它吗?
SwitchCompat
Widget.MaterialComponents.CompoundButton.Switch
样式,使用Theme.MaterialComponents
中定义的颜色(如colorSecondary
、colorSurface
和colorOnSurface
),并在暗模式下应用Elevation Overlays。SwitchCompat
:
Widget.AppCompat.CompoundButton.Switch
样式顺便问一下,他们为什么要删除Switch类?
Switch
类没有被删除。它像其他小部件(如Button
、TextView
等)一样由Android框架提供,而appcompat和material components库提供了它们的更新版本(如AppCompatButton
、MaterialButton
等)。
这些小部件有所不同。
使用AppCompat
主题,有AppCompatViewInflater
自动替换从布局文件中膨胀的所有核心Android小部件,使用那些小部件的AppCompat扩展(例如,Button
被替换为AppCompatButton
)。
使用Theme.MaterialComponents
时,有MaterialComponentsViewInflater
在膨胀时将某些框架小部件替换为Material Components小部件,如果使用了Material Components主题(例如,Button
被替换为MaterialButton
)。
对于SwitchMaterial
和SwitchCompat
而言,这并不是真的。原因在于AppCompat的SwitchCompat
实际上并没有继承自框架的Switch
类。
https://developer.android.com/reference/androidx/appcompat/widget/SwitchCompat
为了让所有 Android 版本上的 Switch 控件外观一致,我们使用 SwitchCompat。
SwitchCompat 是核心 Switch 控件的完整后移版本,将该控件的外观和功能带到旧版平台上。与此包中的其他小部件不同,SwitchCompat 不会自动用于使用元素的布局中。相反,您需要明确使用 <androidx.appcompat.widget.SwitchCompat> 和匹配的属性来设计布局。
SwitchMaterial 继承自 SwitchCompat,是一个创建材料主题开关的类。
切换视图在不同版本的Android上操作方式不同。如果您的应用程序在旧版本或新版本中运行,这可能会造成问题。为了解决这个问题,我们可以使用SwitchCompat
,它在目前所有版本上的操作方式相同。
要进行调整,请转到xml代码,而不是switch。
// change from "Switch"
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/main_activity_sw_simulate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="9dp"
android:fontFamily="@font/coda"
android:text="@string/switch_text"
android:textColor="@color/onyx"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="TouchTargetSizeCheck" />
SwitchCompat
提供描述和摘要,就像使用SwitchPreferenceCompat
一样,通过使用例如app:summaryOff
属性来提供一个? - NeverEndingQueueSwitchCompat
SwitchCompat是CompoundButton
的扩展版。 SwitchCompat
是旧版Switch
小部件的一个版本,适用于返回到API v7
的设备。在这些设备上,它不会尝试使用平台提供的小部件。
SwitchMaterial
它是SwitchCompat
的扩展版本。它创建了一个材料主题开关
。该类使用材料主题的属性来样式化Switch
。因为SwitchCompat
没有扩展Switch
,所以必须在布局XML中明确声明SwitchMaterial。
androidx.appcompat.widget.SwitchCompat
对我有用。 - Zohab Ali