我想更改RadioButton
的实际圈子。
我已经遍布StackOverflow,似乎没什么用。
我使用的是API 17,无法使用ColorStateList
。定制的抽屉似乎让我们看起来和感觉很糟糕。
我想要改变按钮提示的效果,但我需要以编程方式进行。
我确信我一定要错过一些非常简单的事情!
答案 0 :(得分:1)
如何以编程方式设置RadioButton Android的颜色
这是非特定的,所以我发现这是最相关的:
RadioButton rad;//initialize first!
//You can set the background color
rad.setBackgroundColor(Color.BLUE);
//Text color
rad.setTextColor(Color.WHITE);
//or highlight color
rad.setHighlightColor(Color.GREEN);
高亮颜色是按住RadioButton时出现的颜色(默认为黄色)
修改强>
在单选按钮的初始化中,将其称为AppCompatRadioButton而不是
AppCompatRadioButton rad = ....
rad.setHighlightColor(Color.GREEN);
改编自:https://stackoverflow.com/a/32472971/6296561
修改强>
试试这个:
<强> 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 Button
*/
RadioButton RB1= (RadioButton) getLayoutInflater().inflate(R.layout.custom_radiobutton, null);//initialize and set content
RB1.setText("RB1");
radioGroup.addView(RB1);//add the radiobutton to the radiogroup defined in the layout
/**
* Second Radio Button
*/
RadioButton RB2 = (RadioButton) getLayoutInflater().inflate(R.layout.custom_radiobutton, null);//initialize and set content
RB2.setText("RB2");
radioGroup.addView(RB2);//add the radiobutton to the radiogroup defined in the layout
}
}
<强> 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="">
<!-- leave empty -->
</RadioButton>
注意: buttonTint
仅适用于API 21+。 (未经测试)您可以将RadioButton更改为AppCompatRadioButton。 (它未经测试,因此我不确定它是否适用于api 20及更低版本)
<?xml version="1.0" encoding="utf-8"?>
<AppCompatRadioButton 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="">
<!-- leave empty -->
</AppCompatRadioButton>
Documentation about AppCompatRadioButton
如果您使用AppCompatRadioButton,我认为您还必须使用AppCompatRadioGroup并将ACRB的创建编辑为:
AppCompatRadioButton RB1 = (AppCompatRadioButton) getLayoutInflater().inflate(R.layout.custom_radiobutton, null);//initialize and set content
RB1.setText("RB1");
radioGroup.addView(RB1);//add the radiobutton to the radiogroup defined in the layout
答案 1 :(得分:0)
可以通过使用您自己的自定义图像来更改RadioButton圆圈的颜色。 假设您有两个圆形图像,分别用于选中和未选中。 checkradiobutton和uncheckedradiobutton。现在,使xml(custom_radio_button)可绘制如下:
<?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/checkedradiobutton" />
<item android:state_checked="false" android:drawable="@drawable/unchekedradiobutton" />
我相信您正在使用
创建单选按钮 RadioButton rb = new RadionButton(context);
radioButton.setLayoutParams(new
ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
radioButton.setTextColor(ContextCompat.
getColor(context,R.color.royal_blue));
radioButton.setButtonDrawable(R.drawable.custom_radio_button);//this will change the default circles