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

时间:2015-06-23 16:22:57

标签: java android button styles

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

<style name="AppTheme" parent="android:Theme.Black">
    <!-- Customize your theme here. -->
</style>

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

default

当我向此按钮(android:background="@color/play_bg")添加背景颜色时会发生以下情况:

enter image description here

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

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

enter image description here

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

所以有两个问题:

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

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

2 个答案:

答案 0 :(得分:12)

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

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

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="PLAY"
android:id="@+id/btn1"
... />

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

Button b = (Button)findViewByID(R.id.btn1);
b.getBackground().setColorFilter(0xFFFF0000,PorterDuff.Mode.MULTIPLY);

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

答案 1 :(得分:1)

就我而言,我将在这个过程中进行

<Button
    android:id="@+id/button1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="3dp"
    android:background="@color/play_as"
    android:padding="8dp"
    android:text="Button" />

或者您可以使用此link这是创建按钮的更简单方法