2

トグルボタンにいくつかのカスタムテーマを適用するためにこの例に従いましたが、アプリを実行すると、一般的なAndroidトグルアイコンが表示されます-ここかそこに設定がなく、余分な目を使用できると思います。

ListViewチェック済み/チェックなしの状態でカスタムドローアブルを使用しようとしているで使用するためのレイアウトがあり、各トグルステータスはデフォルトでチェック済みに設定されています。

<ToggleButton
        android:id="@+id/profile_item_value_text"
        style="@style/ProfileTagTheme"
        android:layout_width="0px"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:textSize="16dp"
        android:textColor="@color/black"
        android:layout_gravity="center"
        android:gravity="center_vertical|center_horizontal"
        android:checked="true" />

これが私のstylesファイルにあるものですProfileTagTheme

<style name="Widget.Button.Toggle" parent="android:Widget">
    <item name="android:background">@drawable/profile_btn_toggle_bg</item>
    <item name="android:disabledAlpha">@android:attr/disabledAlpha</item>
</style>
<style name="ProfileTagTheme" parent="android:Theme.Black">
    <item name="android:buttonStyleToggle">@style/Widget.Button.Toggle</item>
</style>

そして今度はprofile_btn_toggle_bg.xml、私のメインディレクトリに住んでいdrawableます:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background" android:drawable="@android:color/transparent"/>
    <item android:id="@android:id/toggle" android:drawable="@drawable/profile_btn_toggle"/>
</layer-list>

profile_btn_toggleそのすぐ隣にある参照:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:drawable="@drawable/tag_active" /> <!-- pressed -->
    <item android:drawable="@drawable/tag" /> <!-- default/unchecked -->
</selector>

カスタム画像がdrawablesディレクトリに存在することを確認したので、明らかに、スタイルがカスケードする方法について何かを誤解しているか、このスタイルの狂気のどこかに参照がありません。

4

2 に答える 2

3

ですから、私が抱えていた唯一の本当の問題は、私の実装でandroid:background要素が欠落していることだったようです。ToggleButtonしたがって、上記のコードへの唯一の変更は、その要素を追加することでした。

<ToggleButton
        android:id="@+id/profile_item_value_text"
        style="@style/ProfileTagTheme"
        android:background="@drawable/profile_btn_toggle_bg"
        android:layout_width="0px"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:textSize="16dp"
        android:textColor="@color/black"
        android:layout_gravity="center"
        android:gravity="center_vertical|center_horizontal"
        android:checked="true"
        android:onClick="onToggleClicked" />
于 2013-02-06T21:22:28.510 に答える
1

私はこのようなことをいくつかのアプリで行っています。これはスタイルに対するまったく異なるアプローチであり、状況に応じて機能する場合と機能しない場合があることに注意してください。背景を設定することで、トグルボタンに必要な画像を設定できます。

<ToggleButton
    android:id="@+id/tb_useNotificationShortcuts"
    android:layout_width="100dp"
    android:layout_height="25dp"
    android:layout_gravity="center"
    android:background="@drawable/togglebutton"
    android:tag="21" />


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

   <item android:drawable="@drawable/custom_toggle_on" android:state_checked="true"/>
   <!-- pressed -->
   <item android:drawable="@drawable/custom_toggle_off"/>
   <!-- default/unchecked -->

</selector>

custom_toggle_onとcustom_toggle_offは私の画像ですが、これらはレイヤーリストにすることもできます。

于 2013-02-06T18:20:54.057 に答える