在Android Studio中按下按钮时,如何修改按钮的外观
我一直在试验按钮属性,以及我通常可以用按钮做什么。我想修改按钮单击时的外观。 我创建了三个可绘制的资源文件,两个用于每个按钮状态(按下或默认),一个用于状态列表,以传递给主活动xml中的按钮。 但是,这不起作用,因为我单击按钮时按钮保持不变 自定义按钮按下.xml文件代码在Android Studio中按下按钮时,如何修改按钮的外观,android,xml,Android,Xml,我一直在试验按钮属性,以及我通常可以用按钮做什么。我想修改按钮单击时的外观。 我创建了三个可绘制的资源文件,两个用于每个按钮状态(按下或默认),一个用于状态列表,以传递给主活动xml中的按钮。 但是,这不起作用,因为我单击按钮时按钮保持不变 自定义按钮按下.xml文件代码 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schema
<?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
forMaterialButton
仅在库的1.2.0+版本中受支持。是的。。它确实奏效了。。谢谢把它作为答案贴出来,我会记下来的