使用28.0.0-rc01的按钮样式

时间:2018-09-03 13:49:31

标签: android android-9.0-pie

我有以下按钮:

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> 中看起来像这样:

enter image description here

但是看起来像28.0.0-alpha1alpha2alpha3

enter image description here

为什么忽略了我在更高版本(例如RC)上的样式?我的Button定义可能根本上有问题吗?

1 个答案:

答案 0 :(得分:2)

之所以这样做,是因为您的AppThemeTheme.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">