如何在android studio中更改按钮的颜色

hah*_*ueh 17 android android-layout android-button

我是android编程的新手.如何更改按钮的颜色?

<Button
    android:id="@+id/btn"
    android:layout_width="55dp"
    android:layout_height="50dp"
    android:layout_gravity="center"
    android:text="Button Text"
    android:paddingBottom="20dp"/>
Run Code Online (Sandbox Code Playgroud)

小智 21

你可以通过两种方式改变颜色; 通过XML或编码.我建议使用XML,因为初学者更容易理解.

XML:

<Button
    android:background="@android:color/white"
    android:textColor="@android:color/black"
/>
Run Code Online (Sandbox Code Playgroud)

您也可以使用十六进制值.

android:background="@android:color/white"
Run Code Online (Sandbox Code Playgroud)

编码:

//btn represents your button object

btn.setBackgroundColor(Color.WHITE);
btn.setTextColor(Color.BLACK);
Run Code Online (Sandbox Code Playgroud)

  • 想要指出的是,无论您的经验水平如何,使用布局 XML 都是一个好主意,尤其是在不需要更改颜色的情况下。即使它确实改变了,我也会使用布局绑定。 (2认同)
  • 不要使用它-您会丢失按钮动画(抬起和波纹) (2认同)

Tom*_*rom 9

对于文字颜色添加:

android:textColor="<hex color>"
Run Code Online (Sandbox Code Playgroud)


对于背景颜色添加:

android:background="<hex color>"
Run Code Online (Sandbox Code Playgroud)


API 21开始,您可以使用:

android:backgroundTint="<hex color>"
android:backgroundTintMode="<mode>"
Run Code Online (Sandbox Code Playgroud)

注意:如果你要使用android/java,你真的应该学习如何google;)
如何在Android中自定义不同的按钮

  • 损坏的链接.... (3认同)

小智 8

上面介绍了许多很棒的方法 - 一个较新的注释

早期版本的 Material 中似乎存在一个错误,导致无法覆盖某些类型的按钮颜色。

请参阅:[按钮] android:background 不工作 #889

我今天使用的是 Material 1.3.0。我只是按照链接帖子中 KavinduDissanayake 的指示并使用了以下格式:

app:backgroundTint="@color/purple_700"
Run Code Online (Sandbox Code Playgroud)

(当然,我将所选颜色更改为我自己的主题。)这个解决方案对我来说非常简单。


Nec*_*ann 7

正确的方式...

以下方法实际上有效。

如果愿意-使用主题
默认情况下,按钮颜色为android:colorAccent。因此,如果您创建这样的样式...

<style name="Button.White" parent="ThemeOverlay.AppCompat">
    <item name="colorAccent">@android:color/white</item>
</style>
Run Code Online (Sandbox Code Playgroud)

您可以像这样使用它...

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:theme="@style/Button.White"
    />
Run Code Online (Sandbox Code Playgroud)

或者-使用色调
您可以简单地android:backgroundTint为21级或更高app:backgroundTint级别的API 或7级或更高级别的API 添加。

有关更多信息,请参见此博客

问题被接受的答案...

如果用颜色替换背景,则会失去按钮的效果,并且该颜色将应用于按钮的整个区域。它不会考虑填充,阴影和角半径。

  • backgroundTint 是要走的路。 (4认同)
  • 由于某种原因,这两种方法都不适合我。尽管我可以从“设计”选项卡中看到它,但当我运行应用程序时,它仍然显示默认颜色。(我也尝试过“android:background”,但也没有用。) (3认同)

Ped*_*ina 7

如果第一个解决方案不起作用,请尝试以下操作:

android:backgroundTint="@android:color/white"
Run Code Online (Sandbox Code Playgroud)

我希望这能成功。快乐编码。


小智 5

这是我的代码,用于在按钮上制作不同的颜色,以及线性、约束和滚动布局

首先,你需要在你的drawable上创建一个custom_button.xml

  1. 转到资源
  2. 展开它,右键单击可绘制的
  3. 新建 -> 可绘制资源文件
  4. 文件名:custom_button,单击“确定”

Custom_Button.xml 代码

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@color/red"/> <!-- pressed -->
    <item android:state_focused="true" android:drawable="@color/blue"/> <!-- focused -->
    <item android:drawable="@color/black"/> <!-- default -->
</selector>
Run Code Online (Sandbox Code Playgroud)

二、去资源

  1. 扩大价值
  2. 双击colors.xml
  3. 复制下面的代码

Colors.xml 代码

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>

    <color name="black">#000</color>
    <color name="violet">#9400D3</color>
    <color name="indigo">#4B0082</color>
    <color name="blue">#0000FF</color>
    <color name="green">#00FF00</color>
    <color name="yellow">#FFFF00</color>
    <color name="orange">#FF7F00</color>
    <color name="red">#FF0000</color>
</resources>
Run Code Online (Sandbox Code Playgroud)

截图如下

在此输入图像描述 XML编码 在此输入图像描述 设计预览