簡體   English   中英

Android自定義按鈕填充在按下狀態下不會更改

[英]Android Custom button Padding doesn't change in pressed state

我有一個由選擇器在3種狀態下制作的自定義按鈕:正常,按下和禁用。我的按鈕下方有一個小層,使它們顯示為3d。 我的問題是,當按鈕進入按下狀態時,我希望它使填充更改​​(例如從頂部的0dp到頂部的5dp)。我嘗試了幾種解決方案,但它不起作用。 這是我的代碼:我的選擇器:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:variablePadding="true" >
    <item android:drawable="@drawable/button_pressed" android:state_pressed="true" />
    <item android:drawable="@drawable/button_disabled" android:state_enabled="false" />
    <item android:drawable="@drawable/button_normal" />
</selector>

這是狀態和陰影drawable:

陰影:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="@dimen/corner_radius" />
    <solid android:color="@color/buttonshadow" />

</shape>

正常:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/button_shadow" />

    <item >
        <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
            <corners
                android:radius="11dp"
                />
            <solid
                android:color="@color/buttonColor"
                />
        </shape>
    </item>
</layer-list>

按:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#00000000"/>
            <padding
                android:left="3dp"
                android:top="3dp"
                android:right="0dp"
                android:bottom="0dp" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="@dimen/corner_radius" />
            <solid android:color="@color/buttonColor" />
            <padding
                android:left="3dp"
                android:top="3dp"
                android:right="0dp"
                android:bottom="0dp" />
        </shape>
    </item>
</layer-list>

我的按鈕用法:

android:id="@+id/btn_gologin"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Hello"
        style="@style/MyButton"

和我的風格:

<style name="MyButton" >
        <item name="android:background">@drawable/button_selector</item>
        <!--   darker variant for the status bar and contextual app bars -->
        <item name="android:textColor">@color/black</item>
        <!--   theme UI controls like checkboxes and text fields -->
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:textSize">20sp</item>
        <item name="android:textAllCaps">false</item>

    </style>

您沒有在按鈕中設置更改

假設此文件的名稱是myCustomButton.xml

version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:variablePadding="true" >
    <item android:drawable="@drawable/button_pressed" android:state_pressed="true" />
    <item android:drawable="@drawable/button_disabled" android:state_enabled="false" />
    <item android:drawable="@drawable/button_normal" />
</selector>

然后你的按鈕使用將是

<android:id="@+id/btn_gologin"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Hello"
        android:background="@drawable/myCustomButton"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM