![enter image description here](https://i.stack.imgur.com/tRyIY.png)
는 SI 나는이 일을 찾을 mplest 방법은 다음과 같이
1) RadioButton 클래스를 확장 : 라디오에 대한 XML 코드 아래
import android.content.Context;
import android.view.ViewGroup;
import android.widget.RadioButton;
public class RoundedButton extends RadioButton {
private static final int[] STATE_ONLY_ONE = new int[] {
android.R.attr.state_first,
android.R.attr.state_last,
};
private static final int[] STATE_FIRST = new int[] {
android.R.attr.state_first
};
private static final int[] STATE_LAST = new int[] {
android.R.attr.state_last
};
public RoundedButton(Context context) {
super(context);
}
@Override
protected int[] onCreateDrawableState(int extraSpace) {
ViewGroup parent = (ViewGroup) getParent();
if (parent == null) {
return super.onCreateDrawableState(extraSpace);
}
final int size = parent.getChildCount();
final boolean isFirst = (parent.getChildAt(0) == this);
final boolean isLast = (parent.getChildAt(size-1) == this);
int[] states = super.onCreateDrawableState(extraSpace + 2);
if (isFirst && isLast) {
mergeDrawableStates(states, STATE_ONLY_ONE);
} else if (isFirst) {
mergeDrawableStates(states, STATE_FIRST);
} else if (isLast) {
mergeDrawableStates(states, STATE_LAST);
}
return states;
}
}
2) "고해상도/드로어 블/사진 rbtn_selector.xml"에서 하나 개의 XML 파일을 만듭니다 추가 단추 배경입니다.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- First Checked -->
<item android:state_first="true" android:state_checked="true">
<shape>
<gradient
android:angle="90"
android:startColor="@color/radio_button_selected_start"
android:endColor="@color/radio_button_selected_end"
android:type="linear" />
<!--<solid android:color="@android:color/holo_blue_dark" />-->
<corners android:topLeftRadius="10dp" android:topRightRadius="10dp"/>
<stroke android:width="@dimen/radio_button_border" android:color="@color/radio_button_border_selected" />
</shape>
</item>
<!-- First Unchecked -->
<item android:state_first="true" android:state_checked="false">
<shape>
<gradient
android:angle="90"
android:startColor="@color/radio_button_unselected_start"
android:endColor="@color/radio_button_unselected_end"
android:type="linear" />
<!--<solid android:color="@android:color/holo_purple"/>-->
<corners android:topLeftRadius="10dp" android:topRightRadius="@dimen/radio_button_radius"/>
<stroke android:width="@dimen/radio_button_border" android:color="@color/radio_button_border_unselected" />
</shape>
</item>
<!-- Last Checked -->
<item android:state_last="true" android:state_checked="true">
<shape>
<gradient
android:angle="90"
android:startColor="@color/radio_button_selected_start"
android:endColor="@color/radio_button_selected_end"
android:type="linear" />
<!--<solid android:color="@android:color/holo_green_dark" />-->
<corners android:bottomLeftRadius="@dimen/radio_button_radius" android:bottomRightRadius="@dimen/radio_button_radius"/>
<stroke android:width="@dimen/radio_button_border" android:color="@color/radio_button_border_selected" />
</shape>
</item>
<!-- Last Unchecked -->
<item android:state_last="true" android:state_checked="false">
<shape>
<gradient
android:angle="90"
android:startColor="@color/radio_button_unselected_start"
android:endColor="@color/radio_button_unselected_end"
android:type="linear" />
<!--<solid android:color="@android:color/holo_red_dark"/>-->
<corners android:bottomLeftRadius="@dimen/radio_button_radius" android:bottomRightRadius="@dimen/radio_button_radius"/>
<stroke android:width="@dimen/radio_button_border" android:color="@color/radio_button_border_unselected" />
</shape>
</item>
<!-- Default Checked -->
<item android:state_checked="true">
<shape>
<gradient
android:angle="90"
android:startColor="@color/radio_button_selected_start"
android:endColor="@color/radio_button_selected_end"
android:type="linear" />
<stroke android:width="@dimen/radio_button_border" android:color="@color/radio_button_border_selected" />
<!--<solid android:color="@android:color/holo_orange_dark" />-->
</shape>
</item>
<!-- Default Unchecked -->
<item android:state_checked="false">
<shape>
<gradient
android:angle="90"
android:startColor="@color/radio_button_unselected_start"
android:endColor="@color/radio_button_unselected_end"
android:type="linear" />
<stroke android:width="@dimen/radio_button_border" android:color="@color/radio_button_border_unselected" />
<!--<solid android:color="@android:color/holo_green_light"/>-->
</shape>
</item>
</selector>
3)에서 하나 개의 XML 파일을 만듭니다 "고해상도// rbtn_textcolor_selector.xml 당김"라디오 버튼 텍스트 선택 색상에 대한 XML 코드 아래에 추가합니다. (텍스트 색상 선택기 XML 파일)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:color="@color/radio_text_selected"/>
<item android:color="@color/radio_text_unselected"/>
</selector>
4) 스타일을 버튼으로 설정하십시오 :
4.1) 프로그래밍 exixsting을 radioGroup 일부 RoundedButton을 추가
RoundedButton newRadioButton = new RoundedButton(this.getActivity());
if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) {
newRadioButton.setBackgroundDrawable(this.getActivity().getResources().getDrawable(R.drawable.rbtn_selector));
} else {
newRadioButton.setBackground(this.getActivity().getResources().getDrawable(R.drawable.rbtn_selector));
}
newRadioButton.setTextColor(this.getActivity().getResources().getColorStateList(R.color.rbtn_textcolor_selector));
4.2) XML을 :
<RoundedButton
android:id="@+id/bt_id_1"
android:background="@drawable/rbtn_selector"
android:textColor="@drawable/rbtn_textcolor_selector" />
5) 자신의 색상과 치수를 선택 제가 예에서 사용 된 것과 같습니다
<color name="radio_text_selected">#FFF</color>
<color name="radio_text_unselected">#222</color>
<color name="radio_button_selected_start">#5393c5</color>
<color name="radio_button_selected_end">#6facd5</color>
<color name="radio_button_unselected_start">#f9f9f9</color>
<color name="radio_button_unselected_end">#eee</color>
<color name="radio_button_border_selected">#2373a5</color>
<color name="radio_button_border_unselected">#aaa</color>
과 :
<dimen name="radio_button_radius">10dp</dimen>
<dimen name="radio_button_border">0.7dp</dimen>
은 t 주셔서 감사합니다 그는 팁. 지금 당장이 코드를 확인하고 있지만 내 경우와 비슷한 것을 보면 확실하지 않습니다. 나는 그들이 단 하나의 스타일의 토글 버튼만을 사용한다고 생각한다. 그러나 스타일에 대한 많은 훌륭한 작업이 있으며 좋은 "준비가 끝난 솔루션"이 없다면 직접해야 할 것입니다. –