我使用的是内置的主题我的Android应用:的Android按钮的背景颜色改变按钮的大小
<style name="AppTheme" parent="android:Theme.Black">
<!-- Customize your theme here. -->
</style>
我很高兴与这一主题,但我想改变一个按钮的背景颜色。下面是它的外观默认:
这里的时候我添加背景颜色来此按钮(android:background="@color/play_bg"
)会发生什么:
咦!它基本上改变了所有按钮的大小,填充和边距!
所以我设法使用backgroundTint
属性(android:backgroundTint="@color/play_bg"
),以获得期望的结果:
不幸的是,这仅仅是因为API,这是不是我接受的21版本的支持。
所以两个问题:
- 为什么与按钮的属性的其余部分更改背景混乱?
- 如何在没有
backgroundTint
的情况下获得预期结果?
还有一个额外问题:如何以编程方式获得预期结果(我的应用程序中有动态按钮,所以这会非常有用)?
尼斯的更简单的方法。有用!为了完整起见,你能解释一下'PorterDuff.mode.MULTIPLY'的作用吗?另外,你知道为什么“android:background =”@ color/...“这个”直观的“解决方案不起作用吗? –
我们主要在设计图形应用时使用PorterDuff。 PorterDuff被描述为一种组合图像的方式,就好像它们是彼此重叠的“不规则形状的纸板块”一样,以及混合重叠部分的方案。 下面是文章中,我发现,WIL更好地解释你: http://ssp.impulsetrain.com/porterduff.html java.lang.Object继承 ↳\t java.lang.Enum中的 \t↳\t android.graphics.PorterDuff.Mode 参考:http://developer.android.com/reference/android/graphics/PorterDuff.Mode.html –
关于你的问题,为什么你的母语的方法没有奏效: 当您使用背景时,背景对文本所在的部分进行了更改。背景取决于您正在使用的文本大小。 对于整个背景更改,您可能需要setColorFiller(Color.RED) –