更改所选状态的按钮形状?

Change Button Shape on selected State?

我有一个 Android 按钮:

<Button
       android:layout_width="wrap_content"
       android:layout_height="44dp"
       android:background="@drawable/action_button" />

action_button.xml 是:

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

    <padding
        android:left="25dp"
        android:right="25dp"/>

    <gradient
        android:angle="0"
        android:endColor="@color/whiteColor"
        android:startColor="@color/whiteColor"/>

    <corners android:radius="@dimen/borderRadius"/>

    <stroke
        android:width="2px"
        android:color="@color/actionColor"/>
</shape>

如何在按下按钮时改变形状?

你需要一个选择器

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/action_button_pressed" />
    <item android:drawable="@drawable/action_button" />
</selector>

将其放入 xml 文件中,在 drawable/ 下,并将其用作 Button 的背景。 Android 会处理剩下的事情

查看: Link

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="#302226"
        android:endColor="#6D7B8D"
        android:angle="45"/>
    <padding android:left="6dp"
        android:top="6dp"
        android:right="6dp"
        android:bottom="6dp" />
    <corners android:radius="30dp" />

</shape>

或查看:

 <ImageButton
                 android:id="@+id/imageButton1"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:src="@drawable/shape_oval" />

Shape_oval 是一张图片,我们可以从 google 中搜索或自己在画图或 photoshop 中绘制。

您好,请使用下面的选择器并根据您的需要进行更改

selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
   <!-- <item android:state_enabled="false"
          android:drawable="@drawable/cyan_strip" />
    <item android:state_pressed="true"
          android:drawable="@drawable/cyan_strip" />
    <item android:state_pressed="false" android:state_focused="true"
          android:drawable="@drawable/cyan_strip" />
    <item android:drawable="@drawable/black_strip" /> -->

    <item android:state_enabled="false">
        <shape>
        <solid
            android:color="#4ec9d9" />
        <stroke
            android:width="1dp"
            android:color="#FFFFFF" />
        <padding
            android:left="1dp"
            android:top="1dp"
            android:right="1dp"
            android:bottom="1dp" />
    </shape>
    </item>

    <item android:state_pressed="true">
        <shape>
        <solid
            android:color="#4ec9d9" />
        <stroke
            android:width="1dp"
            android:color="#FFFFFF" />
        <padding
            android:left="1dp"
            android:top="1dp"
            android:right="1dp"
            android:bottom="1dp" />
    </shape>
    </item>

    <item android:state_pressed="false" android:state_focused="true">
        <shape>
        <solid
            android:color="#4ec9d9" />
        <stroke
            android:width="1dp"
            android:color="#FFFFFF" />
        <padding
            android:left="1dp"
            android:top="1dp"
            android:right="1dp"
            android:bottom="1dp" />
    </shape>
    </item>

    <item android:state_selected="true">
        <shape>
        <solid
            android:color="#4ec9d9" />
        <stroke
            android:width="1dp"
            android:color="#FFFFFF" />
        <padding
            android:left="1dp"
            android:top="1dp"
            android:right="1dp"
            android:bottom="1dp" />
    </shape>
    </item>

    <item >
       <shape>
        <solid
            android:color="#000000" />
        <stroke
            android:width="1dp"
            android:color="#FFFFFF" />
        <padding
            android:left="1dp"
            android:top="1dp"
            android:right="1dp"
            android:bottom="1dp" />
    </shape> 
    </item>

</selector>