web-dev-qa-db-ja.com

ラジオボタンの円の色を変更

RadioButton の円の色を変えたいのですが、どのプロパティを設定すればよいのかわかりませんでした。背景色は黒なので見えなくなります。円の色を白に設定したいです。

124
Amandeep Singh

もっと簡単に、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>

結果:

Colored Android Radio Button

あなたがコードでそれをやりたいならば(同じく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
}
209
Jorge Arimany

更新: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でテストされた結果:

This one is tested on API 19

詳しくはAndroid reference link をご覧ください。

150
aknay
<Android.support.v7.widget.AppCompatRadioButton
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    app:buttonTint="@color/Color" />
72
IgorOliveira

ポスト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.xmldrawable 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をあなたが選んだ色に置き換えるだけです。

45
Vaibhav Sharma

このコードを使う必要があります:

<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を使うこと!

14
srt

質問は古くなっていますが、私の答えが人々に役立つと思います。ラジオボタンのチェックされていない状態とチェックされた状態の色は、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>

このスタイルで希望の色を設定できます。

10
Jaura

buttonTintプロパティを設定します。たとえば、Android:buttonTint="#99FF33"です。

9
Sandy

私はこのようにして短くしました(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>

未チェックのステータスを描画するには透明色を追加する必要がありますが、それ以外の場合は黒色の楕円形で描画します。

6
Hatem Badawi

それにはxml属性があります。

Android:buttonTint="yourcolor"
6
thelearner

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" />
5
Rasoul Miri

このように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>

そして、あなたはこのようなボタンを手に入れるでしょう:

enter image description here

colorControlNormalチェックされていない状態に使用され、colorAccentチェックされた状態に使用されます。

4
Nosov Pavel
  1. Styles.xmlファイルでカスタムスタイルを宣言します。

    <style name="MyRadioButton" parent="Theme.AppCompat.Light">  
      <item name="colorControlNormal">@color/Indigo</item>
      <item name="colorControlActivated">@color/pink</item>
    </style>  
    
  2. 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に及ぶ場合のみ

4
batsheva

RadioButtonは、デフォルトでres/values/colors.xmlファイル内のcolorAccentの色を取ります。そのファイルに行き、の値を変更してください。

<color name="colorAccent">#3F51B5</color>

あなたが望む色に。

1
Velmurugan V
<RadioButton
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:id="@+id/radio"
    Android:buttonTint="@color/my_color"/>

すべてのボタンは色、サークルボックス、および中央のチェックを変更します。

1
texeratx

タグにAndroid:buttonTint="@color/colorPrimary"属性を使用してください。

0
Cevin Ways

最も簡単な方法はvalues->colours.xmlcolourAccent色を変更することです
しかし、テキストカーソルの色を編集するなど、他のものも変更されることに注意してください。

< color name="colorAccent">#75aeff</color >

0
Manohar Reddy

クリックされたラジオボタンとクリックされていないラジオボタンに異なる色を設定したい場合は、以下を使用してください。

   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"/>
0
anju jo