내 프로젝트 중 하나에서 RadioButton 원의 색상을 변경하고 싶습니다 . 설정 할 속성을 이해할 수 없습니다. 내가 가지고있는 배경색은 검은 색이므로 보이지 않습니다. 원의 색상을 흰색으로 설정하고 싶습니다.
답변
더 간단한 방법은 buttonTint 색상을 설정하는 것입니다.
<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. 그런 다음이 줄을 부모 레이아웃이나 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 유형에 적용 할 수 있습니다.
기존 답변 :
아래 안드로이드 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
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:buttonTint="@color/Color" />
답변
API에서 작업 잘 포스트 (21) 등으로 21 미리
당신에 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>
귀하의 radio button
에서의 XML은 다음과 같은 모양입니다 :
<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
도 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
답변
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" />