我有以下按钮:
Dataset1 <- data.frame(Edge = c("A:B", "D:E"))
Dataset2 <- data.frame(Edge = c("A:B", NA))
Dataset3 <- data.frame(Edge = c("A:B", "D:E"))
splitSort <- function(x, split = ":"){
x <- as.character(x)
x <- strsplit(x, split)
x <- lapply(x, function(y) paste(sort(y), collapse = split))
unlist(x)
}
e1 <- splitSort(Dataset1$Edge)
e2 <- splitSort(Dataset2$Edge)
e3 <- splitSort(Dataset3$Edge)
r <- Reduce(function(x, y) intersect(x, y), list(e1, e2, e3))
i <- which(Dataset2$Edge %in% r)
Dataset2[i, , drop = FALSE]
# Edge
#1 A:B
具有以下样式:
<Button
android:id="@+id/addexperience_button"
style="@style/MyButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/emptystate_image"
android:layout_alignRight="@id/emptystate_image"
android:layout_below="@id/emptystate_image"
android:text="@string/pickdetail_addexperience" />
bg_primarybutton:
<style name="MyButton" parent="AppTheme">
<item name="android:textColor">@color/white</item>
<item name="android:paddingLeft">@dimen/single_spacing</item>
<item name="android:paddingRight">@dimen/single_spacing</item>
<item name="android:background">@drawable/bg_primarybutton</item>
</style>
现在,此按钮在<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetBottom="6dp"
android:insetLeft="4dp"
android:insetRight="4dp"
android:insetTop="6dp">
<ripple android:color="?android:attr/colorControlHighlight">
<item>
<shape
android:shape="rectangle"
android:tint="@color/colorPrimary">
<corners android:radius="18dp" />
</shape>
</item>
</ripple>
</inset>
中看起来像这样:
但是看起来像28.0.0-alpha1
,alpha2
和alpha3
:
为什么忽略了我在更高版本(例如RC)上的样式?我的Button定义可能根本上有问题吗?
答案 0 :(得分:2)
之所以这样做,是因为您的AppTheme
是Theme.MaterialComponents.Light.NoActionBar
,导致您的活动夸大了MaterialButton
而不是Button
,因此您无法更改MaterialButton
的背景与旧Button
的背景相同(请参阅文档)。
如果您希望使用与以前相同的样式,请将MyButton
样式替换为
<style name="MyButton">
<item name="android:textColor">@color/white</item>
<item name="android:paddingLeft">@dimen/single_spacing</item>
<item name="android:paddingRight">@dimen/single_spacing</item>
<item name="backgroundTint">@color/colorPrimary</item>
<item name="cornerRadius">18dp</item>
<item name="rippleColor">?android:attr/colorControlHighlight</item>
</style>
请注意,在为视图编写样式(将在AppTheme
属性中使用)时,请勿扩展style="@style/MyStyle
。
他们引入了带有alpha2的MaterialButton
的自动充气。
在alpha1和alpha2上打开类android.support.design.theme.MaterialComponentsViewInflater
,以查看区别。
如果您不希望这种自动充气的行为MaterialButton
,请将您的AppTheme
更改为
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar.Bridge">