RadioButton の円の色を変えたいのですが、どのプロパティを設定すればよいのかわかりませんでした。背景色は黒なので見えなくなります。円の色を白に設定したいです。
もっと簡単に、buttonTintカラーを設定するだけです:(apiレベル21以上でのみ動作します)
<RadioButton
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:id="@+id/radio"
Android:checked="true"
Android:buttonTint="@color/your_color"/>
あなたのvalues/colors.xmlの中であなたの色を赤みがかった色にしてください:
<color name="your_color">#e75748</color>
結果:
あなたがコードでそれをやりたいならば(同じくapi 21とそれ以上):
if(Build.VERSION.SDK_INT>=21)
{
ColorStateList colorStateList = new ColorStateList(
new int[][]{
new int[]{-Android.R.attr.state_enabled}, //disabled
new int[]{Android.R.attr.state_enabled} //enabled
},
new int[] {
Color.BLACK //disabled
,Color.BLUE //enabled
}
);
radio.setButtonTintList(colorStateList);//set the color tint list
radio.invalidate(); //could not be necessary
}
更新:1.代わりにこれを使う
<Android.support.v7.widget.AppCompatRadioButton
Android:id="@+id/rbtn_test"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
app:buttonTint="@color/primary" />
2.次に、この行を親レイアウトまたはAndroid StudioのAlt + Enter
に追加して、xmlns:app="http://schemas.Android.com/apk/res-auto"
を自動追加します。
最小例は次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical">
<Android.support.v7.widget.AppCompatRadioButton
Android:id="@+id/rbtn_test"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
app:buttonTint="@color/primary" />
</LinearLayout>
あなたのプログラムでは、このように呼び出す必要があります。 AppCompatRadioButton radioButton = (AppCompatRadioButton) view.findViewById(R.id.rbtn_test);
基本的に、この種のパターンは、AppCompatCheckBox、AppCompatButtonなど、すべてのAppCompactタイプに適用できます。
古い答え:
以下のAndroid API 21をサポートするには、AppCompatRadioButton。を使用します。次にsetSupportButtonTintList
メソッドを使用して色を変更します。これはラジオボタンを作成するための私のコードスニペットです。
AppCompatRadioButton rb;
rb = new AppCompatRadioButton(mContext);
ColorStateList colorStateList = new ColorStateList(
new int[][]{
new int[]{-Android.R.attr.state_checked},
new int[]{Android.R.attr.state_checked}
},
new int[]{
Color.DKGRAY
, Color.rgb (242,81,112),
}
);
rb.setSupportButtonTintList(colorStateList);
API 19でテストされた結果:
詳しくはAndroid reference link をご覧ください。
<Android.support.v7.widget.AppCompatRadioButton
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
app:buttonTint="@color/Color" />
ポスト21と同様に21より前のAPIで作業しています。あなたのstyles.xml
に書いておくと:
<!-- custom style -->
<style name="radionbutton"
parent="Base.Widget.AppCompat.CompoundButton.RadioButton">
<item name="Android:button">@drawable/radiobutton_drawable</item>
<item name="Android:windowIsTranslucent">true</item>
<item name="Android:windowBackground">@Android:color/transparent</item>
<item name="Android:windowContentOverlay">@null</item>
<item name="Android:windowNoTitle">true</item>
<item name="Android:windowIsFloating">false</item>
<item name="Android:backgroundDimEnabled">true</item>
</style>
Xmlのradio button
は次のようになります。
<RadioButton
Android:layout_width="wrap_content"
style="@style/radionbutton"
Android:checked="false"
Android:layout_height="wrap_content"
/>
今あなたがする必要があるのはあなたのradiobutton_drawable.xml
にdrawable folder
を作ることだけです。ここにあなたがそれを入れる必要があるものがあります:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:drawable="@drawable/radio_unchecked" Android:state_checked="false" Android:state_focused="true"/>
<item Android:drawable="@drawable/radio_unchecked" Android:state_checked="false" Android:state_focused="false"/>
<item Android:drawable="@drawable/radio_checked" Android:state_checked="true" Android:state_focused="true"/>
<item Android:drawable="@drawable/radio_checked" Android:state_checked="true" Android:state_focused="false"/>
</selector>
あなたのradio_unchecked.xml
:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="oval">
<stroke Android:width="1dp" Android:color="@color/colorAccent"/>
<size Android:width="30dp" Android:height="30dp"/>
</shape>
あなたのradio_checked.xml
:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item>
<shape Android:shape="oval">
<stroke Android:width="1dp" Android:color="@color/colorAccent"/>
<size Android:width="30dp" Android:height="30dp"/>
</shape>
</item>
<item Android:top="5dp" Android:bottom="5dp" Android:left="5dp" Android:right="5dp">
<shape Android:shape="oval">
<solid Android:width="1dp" Android:color="@color/colorAccent"/>
<size Android:width="10dp" Android:height="10dp"/>
</shape>
</item>
</layer-list>
@color/colorAccent
をあなたが選んだ色に置き換えるだけです。
このコードを使う必要があります:
<Android.support.v7.widget.AppCompatRadioButton
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:buttonTint="@color/black"
Android:text="Radiobutton1"
app:buttonTint="@color/black" />
app:buttonTint
の代わりにAndroid:buttonTint
を、そしてRadiobutton
の代わりにAndroid.support.v7.widget.AppCompatRadioButton
を使うこと!
質問は古くなっていますが、私の答えが人々に役立つと思います。ラジオボタンのチェックされていない状態とチェックされた状態の色は、xmlのstyleを使用して変更できます。
<RadioButton
Android:id="@+id/rb"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:theme="@style/RadioButtonStyle" />
Style.xml内
<style name="RadioButtonStyle" parent="Theme.AppCompat.Light">
<item name="colorAccent">@Android:color/white</item>
<item name="Android:textColorSecondary">@Android:color/white</item>
</style>
このスタイルで希望の色を設定できます。
buttonTint
プロパティを設定します。たとえば、Android:buttonTint="#99FF33"
です。
私はこのようにして短くしました(API 21以前と21後の作業)
Xmlのあなたのラジオボタンはこのように見えるべきです
<RadioButton Android:id="@+id/radioid"
Android:layout_height="wrap_content"
Android:layout_width="wrap_content"
Android:button="@drawable/radiodraw" />
radiodraw.xml内
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_checked="false" >
<shape Android:shape="oval" >
<stroke Android:width="1dp" Android:color="#000"/>
<size Android:width="30dp" Android:height="30dp"/>
<solid Android:color="@Android:color/transparent"/>
</shape>
</item>
<item Android:state_checked="true">
<layer-list>
<item>
<shape Android:shape="oval">
<stroke Android:width="1dp" Android:color="#000"/>
<size Android:width="30dp" Android:height="30dp"/>
<solid Android:color="@Android:color/transparent"/>
</shape>
</item>
<item Android:top="5dp" Android:bottom="5dp" Android:left="5dp" Android:right="5dp">
<shape Android:shape="oval">
<solid Android:width="1dp" Android:color="#000"/>
<size Android:width="10dp" Android:height="10dp"/>
</shape>
</item>
</layer-list>
</item>
</selector>
未チェックのステータスを描画するには透明色を追加する必要がありますが、それ以外の場合は黒色の楕円形で描画します。
それにはxml属性があります。
Android:buttonTint="yourcolor"
API 21の下で
カスタムスタイルのRadioButton style.xmlを作成します。
<style name="RadioButton" parent="Theme.AppCompat.Light">
<item name="colorAccent">@color/green</item>
<item name="Android:textColorSecondary">@color/mediumGray</item>
<item name="colorControlNormal">@color/red</item>
</style>
レイアウト使用テーマでは:
<RadioButton
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:theme="@style/RadioButton" />
API 21以降の場合
ButtonTintを使うだけ
<RadioButton
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:buttonTint="@color/green" />
このようにcolorControlNormalを上書きする必要がある場合があります。
<style name="RadioButtonStyle" parent="AppTheme">
<item name="colorControlNormal">@color/pink</item>
<item name="colorAccent">@color/colorPrimary</item>
<item name="Android:textColorSecondary">@color/black</item>
</style>
そして、あなたはこのようなボタンを手に入れるでしょう:
colorControlNormalチェックされていない状態に使用され、colorAccentチェックされた状態に使用されます。
Styles.xmlファイルでカスタムスタイルを宣言します。
<style name="MyRadioButton" parent="Theme.AppCompat.Light">
<item name="colorControlNormal">@color/Indigo</item>
<item name="colorControlActivated">@color/pink</item>
</style>
Androidを介してこのスタイルをRadioButtonに適用します。テーマ属性。
<RadioButton
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:checked="true"
Android:text="Radio Button"
Android:theme="@style/MyRadioButton"/>
あなたの活動がAppCompatActivity
に及ぶ場合のみ
RadioButtonは、デフォルトでres/values/colors.xmlファイル内のcolorAccentの色を取ります。そのファイルに行き、の値を変更してください。
<color name="colorAccent">#3F51B5</color>
あなたが望む色に。
<RadioButton
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:id="@+id/radio"
Android:buttonTint="@color/my_color"/>
すべてのボタンは色、サークルボックス、および中央のチェックを変更します。
タグにAndroid:buttonTint="@color/colorPrimary"
属性を使用してください。
最も簡単な方法はvalues->colours.xml
のcolourAccent
色を変更することです
しかし、テキストカーソルの色を編集するなど、他のものも変更されることに注意してください。
< color name="colorAccent">#75aeff</color >
クリックされたラジオボタンとクリックされていないラジオボタンに異なる色を設定したい場合は、以下を使用してください。
Android:buttonTint="@drawable/radiobutton" in xml of the radiobutton and your radiobutton.xml will be:
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_pressed="true" Android:color="#1E88E5"/>
<item Android:state_checked="true" Android:color="#00e676"/>
<item Android:color="#ffffff"/>