43

CheckBoxたくさんの場所を検索しましたが、チェックボックスの境界線のドローアブルがわからないようです。誰かが私を正しい方向に向けることができますか?

チェックされていないように見えます(ボックスがほとんど見えません)

ここに画像の説明を入力してください

これがチェック状態です

ここに画像の説明を入力してください

これが私がそれをどのように見せようとしているのかです。

ここに画像の説明を入力してください

4

7 に答える 7

56

これには、カスタムチェックボックスのxmlファイルを使用できます。以下のxmlコードをdrawablesフォルダに保存し、名前を付けますcustom_checkbox.xml

<?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/cbchk_blue"
        android:state_focused="false">
    </item>
    <item android:state_checked="true" 
        android:drawable="@drawable/cbchk_blue"
        android:state_focused="true">
    </item>
    <item android:state_checked="false" 
        android:drawable="@drawable/cbunchk_blue"
        android:state_focused="false">
    </item>
    <item android:state_checked="false" 
        android:drawable="@drawable/cbunchk_blue"
        android:state_focused="true">
    </item>
</selector>

次に、このファイルを次のようにチェックボックスの背景として使用します。

       <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:button="@drawable/custom_checkbox"
        android:id="@+id/checkBox" />

ここでは、 cbchk_bluecbunchk_blueの代わりに使用した自分の画像をアップロードしています

チェックされていないチェックボックス チェックボックスをオンにしました

于 2012-07-13T04:51:45.410 に答える
34

アクティビティにテーマHoloDarkを使用し、背景が白の場合にも、同じ問題が発生します。したがって、チェックボックスはダークスタイルです。簡単な回避策は、AndroidのHoloLightから直接背景を設定します。

int id = Resources.getSystem().getIdentifier("btn_check_holo_light", "drawable", "android");
checkBox.setButtonDrawable(id);

あなたは次の答えでこれらすべてのものがどのように機能するかについての素晴らしい概要を見つけることができます: https ://stackoverflow.com/a/10139809/1170154

于 2014-01-17T10:35:27.150 に答える
27

Android 5およびAPIレベル21以降、チェックボックス(および他の多くのウィジェット)の色を自由に選択できます。以下をに追加しますvalues-v21/styles.xml(以前のAPIのフォールバックがあることを確認しながらvalues/styles.xml

<style name="CustomCheckBox">
    <item name="android:theme">@style/CheckBoxAppTheme</item>
</style>

<style name="CheckBoxAppTheme">
    <item name="android:colorAccent">
        @color/theFillColorInCheckedState
    </item>
    <item name="android:colorControlNormal">
        @color/theBorderColorInUncheckedState
    </item>
    <item name="android:colorControlHighlight">
        @color/theBackgroundColorWhenFocusingTheCheckBox
    </item>
</style>

次に、レイアウトのチェックボックスにスタイルを適用する必要があります。

<CheckBox
    style="@style/CustomCheckBox" />

これで、チェックボックスがお気に入りの色で表示されます。

于 2015-01-06T17:05:45.403 に答える
15

申し訳ありませんが、これらの回答のほとんどは不完全であるか、いくつかの小さなバグがあります。Androidのさまざまなバージョンにまたがる「スタイリング」コントロールは、お尻の壮大な苦痛です。非常に厳しい設計制約のあるプロジェクトで何日も髪を引っ張った後、私はついに故障してテストアプリを作成し、スタイリングスイッチとチェックボックスのさまざまなソリューションを実際に掘り下げてテストしました。それは頻繁に他を持っています。これが私が見つけたものです...

まず、実際にどちらかをスタイル設定することはできませんが、テーマをすべてに適用することも、1つだけに適用することもできます。

2番目:すべてをXMLから実行でき、2番目の値(v21 / styles.xml)は必要ありません。

第三に:スイッチに関しては、古いバージョンのAndroidをサポートしたい場合は、2つの基本的な選択肢があります(確かにそうです)...

  1. を使用するSwitchCompatと、プラットフォーム間で同じように見えるようになります。
  2. を使用するSwitchと、テーマの残りの部分でテーマを設定できます。または、その特定のスイッチだけで、古いバージョンのAndroidでは、スタイルが設定されていない古い正方形のスイッチが表示されます。

さて、簡単な参照コードについて説明します。もう一度、単純なHello Worldを作成すると!このコードをドロップすると、心ゆくまでプレイできます。ここではすべてがボイラープレートなので、アクティビティとスタイルのXMLを含めるだけです...

activity_main.xml..。

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.kunai.switchtest.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="'Styled' SwitchCompat" />

    <android.support.v7.widget.SwitchCompat
        android:id="@+id/switch_item"
        android:layout_width="wrap_content"
        android:layout_height="46dp"
        android:layout_alignParentEnd="true"
        android:layout_marginEnd="16dp"
        android:checked="true"
        android:longClickable="false"
        android:textOff="OFF"
        android:textOn="ON"
        app:switchTextAppearance="@style/BrandedSwitch.text"
        app:theme="@style/BrandedSwitch.control"
        app:showText="true" />

</RelativeLayout>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.kunai.switchtest.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Themed SwitchCompat" />

    <android.support.v7.widget.SwitchCompat
        android:id="@+id/switch_item2"
        android:layout_width="wrap_content"
        android:layout_height="46dp"
        android:layout_alignParentEnd="true"
        android:layout_marginEnd="16dp"
        android:checked="true"
        android:longClickable="false" />

</RelativeLayout>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.kunai.switchtest.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Themed Switch" />

    <Switch
        android:id="@+id/switch_item3"
        android:layout_width="wrap_content"
        android:layout_height="46dp"
        android:layout_alignParentEnd="true"
        android:layout_marginEnd="16dp"
        android:checked="true"
        android:longClickable="false"
        android:textOff="OFF"
        android:textOn="ON"/>

</RelativeLayout>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.kunai.switchtest.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="'Styled' Switch" />

    <Switch
        android:id="@+id/switch_item4"
        android:layout_width="wrap_content"
        android:layout_height="46dp"
        android:layout_alignParentEnd="true"
        android:layout_marginEnd="16dp"
        android:checked="true"
        android:longClickable="false"
        android:textOff="OFF"
        android:textOn="ON"
        android:theme="@style/BrandedSwitch"/>

</RelativeLayout>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.kunai.switchtest.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="'Styled' CheckBox" />

    <CheckBox
        android:id="@+id/checkbox"
        android:layout_width="wrap_content"
        android:layout_height="46dp"
        android:layout_alignParentEnd="true"
        android:layout_marginEnd="16dp"
        android:checked="true"
        android:longClickable="false"
        android:theme="@style/BrandedCheckBox"/>

</RelativeLayout>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.kunai.switchtest.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Themed CheckBox" />

    <CheckBox
        android:id="@+id/checkbox2"
        android:layout_width="wrap_content"
        android:layout_height="46dp"
        android:layout_alignParentEnd="true"
        android:layout_marginEnd="16dp"
        android:checked="true"
        android:longClickable="false"/>

</RelativeLayout>

styles.xml..。

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">#3F51B5</item>
    <item name="colorPrimaryDark">#303F9F</item>
    <item name="colorAccent">#FF4081</item>
</style>

<style name="BrandedSwitch.control" parent="Theme.AppCompat.Light">
    <!-- active thumb & track color (30% transparency) -->
    <item name="colorControlActivated">#e6e600</item>
    <item name="colorSwitchThumbNormal">#cc0000</item>
</style>

<style name="BrandedSwitch.text" parent="Theme.AppCompat.Light">
    <item name="android:textColor">#ffa000</item>
    <item name="android:textSize">9dp</item>
</style>

<style name="BrandedCheckBox" parent="AppTheme">
    <item name="colorAccent">#aaf000</item>
    <item name="colorControlNormal">#ff0000</item>
</style>

<style name="BrandedSwitch" parent="AppTheme">
    <item name="colorAccent">#39ac39</item>
</style>

私は知っています、私は知っています、あなたはこれを構築するのが面倒です、あなたはただあなたのコードを書いてもらいたいだけです。わかった。実行すると次のようになります...

API_21:

API 21

API_18:

API18

于 2016-07-20T00:49:31.297 に答える
7

このAPI21以上のようにチェックボックスの色を設定できます

android:buttonTint = "@ color / YOUR_COLOR"

<CheckBox
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:buttonTint="@color/YOUR_COLOR" />

古いバージョンのサポートについては、V7ライブラリのAppCompatCheckBoxを使用してください

app:buttonTint = "@ color / YOUR_COLOR"

<android.support.v7.widget.AppCompatCheckBox 
    android:layout_height="wrap_content"
    android:layout_width="match_parent"  
    app:buttonTint="@color/YOUR_COLOR" /> 
于 2017-02-22T12:43:39.887 に答える
6

それはドローアブルによって指定されます:android.R.drawable.checkbox_off_backgroundそしてandroid.R.drawable.checkbox_on_background

于 2012-07-13T04:36:00.290 に答える
1

これが最も効率的な方法です。

android:buttonTint = "@ color / black"

于 2017-01-16T05:09:49.867 に答える