簡體   English   中英

使用XML drawable設置RadioButton的樣式

[英]Styling RadioButton using XML drawable

我想使用簡單的形狀狀態選擇器更改RadioButton的指示器。 我創建了以下名為moon_radio.xml的XML,並將其放置在drawable文件夾中。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:state_pressed="false">
        <shape
            android:shape="oval">
            <solid android:color="@color/moon_light_plate" />
        </shape>
    </item>
    <item android:state_checked="false" android:state_pressed="false">
        <shape
            android:shape="oval">
            <stroke
                android:width="2dp"
                android:color="@color/moon_light_plate" />
        </shape>
    </item>
    <item android:state_checked="true" android:state_pressed="true">
        <shape
            android:shape="oval">
            <solid android:color="@color/moon_light_plate_pressed" />
        </shape>
    </item>
    <item android:state_checked="false" android:state_pressed="true">
        <shape
            android:shape="oval">
            <stroke
                android:width="2dp"
                android:color="@color/moon_light_plate_pressed" />
        </shape>
    </item>
</selector>

然后,在布局中的RadioButton上指定android:button="@drawable/moon_radio"屬性。 由於某些原因,這不起作用。 怎么了?

*編輯*可能我已經解釋不清楚,但是我不想更改背景,我想要更改指示器,即默認點。

這是我得到的:

在此處輸入圖片說明

這就是我想要得到的”

在此處輸入圖片說明

您應該在RadioButton android:button屬性中指定此屬性是正確的,只需要添加android:background="@android:color/transparent"

您需要像下面那樣定義RadioButton

<RadioButton
    android:id="@+id/radio0"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/moon_radio"
    android:button="@android:color/transparent"
    android:checked="true"
    android:text="RadioButton1" />

如果您設置android:button="@android:color/transparent"則設置radioButton背景將達到您的目的。

要查看基於應用程序主題的默認RadioButton使用的內容,請進入其中一個API的源代碼。 例如,從SDK Manager可以為API 18安裝“ Android SDK的源”。它將放置在:

sdk\platforms\android-18\data\res\drawable\

查找btn_radio.xmlbtn_radio_holo_dark.xmlbtn_radio_holo_light.xml文件。 它們具有用於不同狀態的狀態選擇器,您可以看到它們使用什么png文件。

您可以在drawable-mdpi \\目錄中找到這些png文件,以查看它們的外觀(例如btn_radio_on.png )。

然后,您可以將btn_radio.xml文件復制到您的drawable目錄中,並使其針對不同狀態使用圖像(或drawable形狀)。

查看這些文件之一,我認為您的狀態是錯誤的(例如,checked = truePressed = false)。 我沒有在默認文件中看到該文件,除了最后一個文件只有check = true的文件。 它從上到下遍歷選擇器。 因此,如果未選擇上方的選項,它只會到達底部的選項。

並且,將選擇器可繪制放置在android:button屬性中。

暫無
暫無

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

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