如何在不改变按钮大小的情况下改变按钮的颜色?

How can I change the colour of a Button without changing its size?

我是 android 开发的新手,我在更改按钮颜色时遇到了问题。

 <Button
            android:id="@+id/SignUp"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="Sign Up"
            android:textColor="#ff0000" />
        <Button
            android:id="@+id/SignIn"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:background="#00ff00"
            android:layout_height="wrap_content"
            android:text="Sign In"
            android:textColor="#ff0000" />

这是我遇到问题的按钮。我改变了背景颜色,但它改变了我的按钮的大小。

仅供参考,左边的按钮是我希望按钮的样子,但在更改颜色后,右边的按钮是我得到的。

我快速浏览了一下以尝试找到解决方案,但我发现的只是告诉我更改我已经完成的背景颜色。

那么我怎样才能让它看起来像左键呢?我假设它与可绘制对象有关,但老实说我不知道​​我在寻找什么。任何指南或任何能为我指明正确方向的东西都会很棒。

谢谢!

背景属性可以不仅仅是一种颜色。您正在用纯色替换默认图像。选项是制作自己的图像,或者调整高度和宽度属性。

https://developer.android.com/guide/topics/ui/controls/button.html#Style

您可以将按钮放入水平方向的LinearLayout视图中,然后设置按钮的权重为1,宽度为0dp,linearLayout的高度为40dp。

您在这里所做的是用纯色替换图像背景。您应该改用样式。

请尝试这种风格

<style name="SpecialButton" parent="Widget.AppCompat.Button.Colored">
   <item name="colorButtonNormal">#00ff00</item>
   <item name="android:textColorPrimary">#ff0000</item>
</style>

在你的styles.xml和

<style name="SpecialButton" parent="Widget.AppCompat.Button.Colored">
   <item name="android:colorButtonNormal">#00ff00</item>
   <item name="android:textColorPrimary">#ff0000</item>
</style>

在你的 v21/styles.xml 和

并将此样式应用于按钮。请评论这是否对您有用,因为我自己还没有测试过。

最简单的答案,用backgroundTint代替background 此代码将起作用:

<Button
android:id="@+id/SignIn"
android:layout_width="0dp"
android:layout_weight="1"
android:backgroundTint="#00ff00"
android:layout_height="wrap_content"
android:text="Sign In"
android:textColor="#ff0000" />