CheckBox
たくさんの場所を検索しましたが、チェックボックスの境界線のドローアブルがわからないようです。誰かが私を正しい方向に向けることができますか?
チェックされていないように見えます(ボックスがほとんど見えません)
これがチェック状態です
これが私がそれをどのように見せようとしているのかです。
CheckBox
たくさんの場所を検索しましたが、チェックボックスの境界線のドローアブルがわからないようです。誰かが私を正しい方向に向けることができますか?
チェックされていないように見えます(ボックスがほとんど見えません)
これがチェック状態です
これが私がそれをどのように見せようとしているのかです。
これには、カスタムチェックボックスの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_blueとcbunchk_blueの代わりに使用した自分の画像をアップロードしています
アクティビティにテーマHoloDarkを使用し、背景が白の場合にも、同じ問題が発生します。したがって、チェックボックスはダークスタイルです。簡単な回避策は、AndroidのHoloLightから直接背景を設定します。
int id = Resources.getSystem().getIdentifier("btn_check_holo_light", "drawable", "android");
checkBox.setButtonDrawable(id);
あなたは次の答えでこれらすべてのものがどのように機能するかについての素晴らしい概要を見つけることができます: https ://stackoverflow.com/a/10139809/1170154
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" />
これで、チェックボックスがお気に入りの色で表示されます。
申し訳ありませんが、これらの回答のほとんどは不完全であるか、いくつかの小さなバグがあります。Androidのさまざまなバージョンにまたがる「スタイリング」コントロールは、お尻の壮大な苦痛です。非常に厳しい設計制約のあるプロジェクトで何日も髪を引っ張った後、私はついに故障してテストアプリを作成し、スタイリングスイッチとチェックボックスのさまざまなソリューションを実際に掘り下げてテストしました。それは頻繁に他を持っています。これが私が見つけたものです...
まず、実際にどちらかをスタイル設定することはできませんが、テーマをすべてに適用することも、1つだけに適用することもできます。
2番目:すべてをXMLから実行でき、2番目の値(v21 / styles.xml)は必要ありません。
第三に:スイッチに関しては、古いバージョンのAndroidをサポートしたい場合は、2つの基本的な選択肢があります(確かにそうです)...
SwitchCompat
と、プラットフォーム間で同じように見えるようになります。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_18:
この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" />
それはドローアブルによって指定されます:android.R.drawable.checkbox_off_background
そしてandroid.R.drawable.checkbox_on_background
これが最も効率的な方法です。
android:buttonTint = "@ color / black"