首页 > 解决方案 > 为custome xml按钮着色时出现问题

问题描述

我在为自定义按钮着色时遇到问题。出于某种原因,似乎无论我要应用什么颜色更改(文本或背景),按钮都保持不变。

我注意到它button.xml具有所需的颜色和正确的形状,尽管它没有出现在background-color活动中的按钮属性

活动中的按钮

   <Button
        android:id="@+id/button2"
        android:layout_width="162dp"
        android:layout_height="53dp"
        android:background="@drawable/button"
        android:text="@string/button"
        android:textAllCaps="false"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.132"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/messagTextView"
        app:layout_constraintVertical_bias="0.804" />

自定义按钮形状

<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="50sp"/>
    <solid android:color="@color/redAdobeXD"/>
</shape>

标签: androidandroid-button

解决方案


如果您使用的是材料组件(如果这是一个相对较新的项目,可能就是这种情况),那么您可以通过Button另一种方式设置样式:

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    tools:context=".FirstFragment">

    <Button
        android:id="@+id/button"
        style="@style/Widget.MaterialComponents.Button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="32dp"
        android:text="I am a Button!"
        android:textColor="@color/white"
        app:backgroundTint="#FF0000"
        app:cornerRadius="50dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

在此处输入图像描述

需要注意的是:

  • style="@style/Widget.MaterialComponents.Button"
  • android:textColor="@color/white"
  • app:backgroundTint="#FF0000"@color/redAdobeXD在你的情况下)
  • app:cornerRadius="50dp"

不需要额外的 xml 并在按钮等上进行设置(仅在更多自定义情况下)。

您可以在此处阅读有关ContainedButton上可用选项的更多信息


推荐阅读