私はAndroid Studioを使用しています。ラジオボタンの色を変更する必要があります。ボタンの色合いの値をプレビューで必要なものに変更した後、プレビューを起動するたびにデバイス上のアプリボタンは標準の緑/青っぽい色です。
これはある種のデバイスAPIレベルの問題ですか?もしそうなら、古いデバイスの色を変更することは可能ですか?
@Ranjithの回答を読んだ後、私は少し掘り下げましたが、これはうまくいったようです。 AppThemeに追加するだけです。
//red is the color of the pressed state and activated state
<item name="colorControlActivated">@Android:color/holo_red_light</item>
//black is the color of the normal state
<item name="colorControlNormal">@Android:color/black</item>
私の質問は、動的なラジオボタンがあるので、これをプログラムでどのように行うのですか?
これは、2つの方法で実行できます(ロリポップ前をサポートするため)。
AppCompatRadioButton
を使用:
AppCompatRadioButton radioButton;
// now use following methods to set tint colour
radioButton.setSupportButtonTintMode();
radioButton.setSupportButtonTintList();
これをスタイルとして、XMLのRadioButton
に適用します。
<style name="RadioButton.Login" parent="Widget.AppCompat.CompoundButton.RadioButton">
<item name="Android:textColor">@Android:color/white</item>
<item name="buttonTint">@Android:color/white</item>
</style>
RadioButton raPrivate = (RadioButton) layout.findViewById(R.id.radioPrivate);
int textColor = Color.parseColor(#000000);
raPrivate.setButtonTintList(ColorStateList.valueOf(textColor));
アプリ全体のcolorControlActivatedとcolorControlNormalを変更せずに色を変更する場合は、新しいスタイルを作成して、ラジオボタンのみのアプリテーマをオーバーライドできます。
<Android.support.v7.widget.AppCompatRadioButton
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerVertical="true"
Android:layout_alignParentEnd="true"
Android:theme="@style/RadioButtonTheme"
Android:id="@+id/radioButton"/>
<style name="RadioButtonTheme" parent="@style/AppTheme">
<item name="colorControlActivated">@color/colorAccent</item>
<item name="colorControlNormal">@color/colorPrimaryDark</item>
</style>
追加のスタイリングの必要はありません。 Androidはxmlでサポートします。ラジオボタンにAndroid:buttonTint = "@ color/yourColor"を追加するだけです。
たとえば.
<RadioButton
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:buttonTint="@color/red"
Android:text="Upload"
Android:textColor="@color/text_dark_gray"
Android:textSize="14sp" />
アプリでappcompatを使用していると仮定すると、styles.xml内に以下を追加するだけです
<item name="colorAccent">@color/blue</item>
これで青色colorAccentが設定されました。色を好きな色に変更してください。
たとえば、style.xml全体
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/accent_material_dark</item>
<item name="colorPrimaryDark">@color/accent_color_dark</item>
<item name="colorAccent">@color/accent_color</item>
<item name="windowActionBar">false</item>
</style>
</resources>
私はこのようにしました:
スクリーンショット
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".MainActivity"
tools:showIn="@layout/app_bar_main">
<RadioGroup
Android:id="@+id/radioGroup"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content">
</RadioGroup>
</RelativeLayout>
MainActivity.Java
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
/**
* First Radio Buttonn
*/
RadioButton radioButtonAndroid = (RadioButton) getLayoutInflater().inflate(R.layout.custom_radiobutton, null);
radioButtonAndroid.setText("Hello Android");
radioGroup.addView(radioButtonAndroid);
/**
* Second Radio Buttonn
*/
RadioButton radioButtonIos = (RadioButton) getLayoutInflater().inflate(R.layout.custom_radiobutton, null);
radioButtonIos.setText("Hello Ios");
radioGroup.addView(radioButtonIos);
}
}
custom_radiobutton.xml
<?xml version="1.0" encoding="utf-8"?>
<RadioButton xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:buttonTint="@color/colorPrimary"
Android:text="">
</RadioButton>
これがお役に立てば幸いです。
//red is the color of the pressed state and activated state
<item name="colorControlActivated">@Android:color/holo_red_light</item>
//black is the color of the normal state
<item name="colorControlNormal">@Android:color/black</item>
から:user2968401
ラジオボタンに異なるスタイルを設定したら、スタイルを新しいスタイルに設定済みの新しいラジオボタンに割り当てることで、スタイルを入れ替えることができます。
(RadioButton)layout.findViewById(R.id.radioButton) = new RadioButton(this, null, R.style.RadioButton_style);