プロジェクトの 1つでRadioButtonの円の色を変更したいのですが、どのプロパティを設定するか理解できませんでした。私が持っている背景色は黒なので、見えなくなります。円の色を白に設定したい。
プロジェクトの 1つで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
}
control.getDrawable().setColorFilter(getResources().getColor(color), PorterDuff.Mode.SRC_IN);
場合control
は、色合いを変更するコントロールであり、希望するcolor
色の整数値である場所を使用する必要があります。例R.color.red
android.R.attr.state_checked
、色を追加します。
更新: 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.次に、この行を親レイアウトに追加するかAlt + Enter
、Android Studioで自動追加します
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>
3.プログラムでは、次のように呼び出す必要があります。
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.support.v7.widget.AppCompatRadioButton ../>
setSupportButtonTintList
使用することを意図していないプライベートメソッドです。ラジオボタンは、Androidの特定のバージョンで奇妙に動作します。代わりに、を使用してくださいCompoundButtonCompat.setButtonTintList(rb, colorStateList)
。
<android.support.v7.widget.AppCompatRadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:buttonTint="@color/Color" />
APIでの作業は、ポスト21と同様に21を事前に
あなたのではstyles.xml
PUT:
<!-- 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>
あなたのradio button
中のXMLは次のようになります。
<RadioButton
android:layout_width="wrap_content"
style="@style/radionbutton"
android:checked="false"
android:layout_height="wrap_content"
/>
今、すべてのあなたがISを行う必要が作る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
、また、android.support.v7.widget.AppCompatRadioButton
代わりにRadiobutton
!
styles.xmlファイルでカスタムスタイルを宣言します。
<style name="MyRadioButton" parent="Theme.AppCompat.Light">
<item name="colorControlNormal">@color/indigo</item>
<item name="colorControlActivated">@color/pink</item>
</style>
このスタイルをandroid:theme属性を介してRadioButtonに適用します。
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="Radio Button"
android:theme="@style/MyRadioButton"/>
あなたの活動が拡大する場合のみ AppCompatActivity
<item name="android:colorControlActivated">@color/pink</item>
私のために働くためにそれを使わなければなりませんでした。理由はまだわかりません。そうでなければ、これは良い答えです。
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" />
質問は古いですが、私の答えは人々を助けると思います。xmlのスタイルを使用して、ラジオボタンのチェックされていない状態とチェックされている状態の色を変更できます。
<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>
このスタイルで目的の色を設定できます。
私はこのように短い方法で作成しました(21の前だけでなく21の前のAPIで作業しています)
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>
チェックされていないステータスを描画するために透明色を追加する必要があります。それ以外の場合は、黒一色の楕円を描画します。
時々あなたはこのように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が使用されます。
それにはxml属性があります:
android:buttonTint="yourcolor"
"Make sure your min API is higher then 21 or this won't work"
それは誤りです。私はAndroidXとAPI 17をターゲットにしていますし、これは私のために働いていた唯一のものである
無効、チェック済み、および有効の状態を変更したい場合は、次の手順を実行します。
<!-- Or androidX radio button or material design radio button -->
<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/radio_button_color" />
次に、カラーresフォルダーに「radio_button_color.xml」という名前のファイルを作成します。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/yellow900" android:state_selected="true" />
<item android:color="@color/yellow800" android:state_checked="true" />
<item android:color="@color/gray800" android:state_enabled="false" />
<item android:color="@color/yellow800" android:state_enabled="true" />
</selector>
クリックしたラジオボタンとクリックしていないラジオボタンに異なる色を設定する場合は、次のように使用します。
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"/>
私はこの問題を抱えていました。アプリの背景が黒で、背景のために非表示になっているRadioButtonがたくさんある場合、それぞれのandroid:buttonTintを編集するのは複雑です。最善の解決策は、styles.xmlファイルの親テーマを変更することです。
私が変更され
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
に
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
そのため、RadioButtonの円は明るいグレーの色合いになり、背景が黒でも表示されます。
これは私のstyle.xmlファイルです:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
@ jh314は正しいです。AndroidManifest.xmlで、
<application
android:allowBackup="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/AppTheme"></application>
style.xml内
<!-- Application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorAccent">@color/red</item>
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>
アイテム名はcolorAccentである必要があり、アプリケーションのウィジェットのデフォルトの色を決定します。
しかし、コードの色を変更したい場合は、@ aknayの答えが正しいかもしれません。