Android按钮背景颜色更改按钮大小

Eri*_*uth 8 java android styles button

我在Android应用中使用了内置主题:

<style name="AppTheme" parent="android:Theme.Black">
    <!-- Customize your theme here. -->
</style>
Run Code Online (Sandbox Code Playgroud)

我很满意这个主题,除了我想改变按钮的背景颜色.以下是默认情况下的外观:

默认

这是我向此按钮添加背景颜色时发生的情况(android:background="@color/play_bg"):

在此输入图像描述

嘿!?它基本上改变了所有按钮的大小,填充和边距!

所以我设法使用backgroundTintproperty(android:backgroundTint="@color/play_bg")得到了预期的结果:

在此输入图像描述

不幸的是,这仅在API的第21版支持,这对我来说是不可接受的.

所以有两个问题:

  • 为什么用按钮属性的其余部分更改背景混乱?
  • 如何在没有预期结果的情况下获得backgroundTint

还有一个额外的问题:如何以编程方式获得预期的结果(我的应用程序中有动态按钮,这样会非常有用)?

Pra*_*hra 13

您可以在Java文件中更改此颜色.当您的主类加载时,您可以获取此按钮的对象,然后更改颜色.

以下是在Manifest文件中定义此按钮的方法:

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="PLAY"
android:id="@+id/btn1"
... />
Run Code Online (Sandbox Code Playgroud)

现在,在添加此XML布局时,您需要在Java文件中

Button b = (Button)findViewByID(R.id.btn1);
b.getBackground().setColorFilter(0xFFFF0000,PorterDuff.Mode.MULTIPLY);
Run Code Online (Sandbox Code Playgroud)

您也可以使用COLOR:COLOR.RED下面的代码有时对我不起作用: - b.setBackgroundColor(int color)

  • 尼斯.有用!为了完整起见,你能解释一下`PorterDuff.mode.MULTIPLY`的作用吗?另外,你知道为什么"android:background ="@ color/..."`的"​​直观"解决方案不起作用? (2认同)