在Android Studio中按下按钮时,如何修改按钮的外观

在Android Studio中按下按钮时,如何修改按钮的外观,android,xml,Android,Xml,我一直在试验按钮属性,以及我通常可以用按钮做什么。我想修改按钮单击时的外观。 我创建了三个可绘制的资源文件,两个用于每个按钮状态(按下或默认),一个用于状态列表,以传递给主活动xml中的按钮。 但是,这不起作用,因为我单击按钮时按钮保持不变 自定义按钮按下.xml文件代码 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schema

我一直在试验按钮属性,以及我通常可以用按钮做什么。我想修改按钮单击时的外观。 我创建了三个可绘制的资源文件,两个用于每个按钮状态(按下或默认),一个用于状态列表,以传递给主活动xml中的按钮。 但是,这不起作用,因为我单击按钮时按钮保持不变

自定义按钮按下.xml文件代码

<?xml version="1.0" encoding="utf-8"?>
     <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">

         <solid android:color="@color/button_color_pressed"/>
         <corners android:radius="30dp"/>
    </shape>

自定义按钮.xml文件(默认状态文件)代码:


自定义按钮\u full.xml文件代码:

<?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
        <corners android:radius="30dp"/>
        <solid android:color="@color/button_color"/>
    </shape>
<?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:drawable="@drawable/custom_button_pressed"
            android:state_pressed="true" />
        <item android:drawable="@drawable/custom_button"/>
    </selector>

主xml文件中按钮的代码片段:

<Button
        android:id="@+id/buttonAboutApp"
        android:layout_width="160dp"
        android:layout_height="105dp"
        android:layout_marginEnd="6dp"
        android:layout_marginRight="6dp"
        android:layout_marginBottom="44dp"
        android:background="@drawable/custom_button_full"
        android:drawableLeft="@mipmap/about_app_icon"
        android:text="@string/About_app"
        android:textAllCaps="false"
        android:textColor="@color/app_background"
        app:backgroundTint="@color/button_color"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent" />


我做错了什么?如果您使用的材质组件库版本低于1.2.0,请提前感谢。如果您的应用程序/活动使用
MaterialComponents
主题,则任何
标记都将自动膨胀为
MaterialButton
实例,因此您的自定义背景将无法工作

由于您试图覆盖按钮的外观,您可能只需要一个基本的
android.widget.button
,而不是
MaterialButton
。可以通过在布局文件的视图标记中指定完全限定名称来实现此目的:

<android.widget.Button
    android:background="@drawable/custom_button_full"
    .../>


您的应用程序/活动是否使用了
MaterialComponents
主题?IIRC,
MaterialButton
不支持通过
android:background
自定义绘图。您可以尝试用
替换
标记,看看这是否能让您的自定义绘图功能正常工作。看起来
android:background
for
MaterialButton
仅在库的1.2.0+版本中受支持。是的。。它确实奏效了。。谢谢把它作为答案贴出来,我会记下来的