我想创建一个RadioButtons
列表来点击偏好。我用这种方式做了单选按钮:
<RadioGroup>
<Preference android:key="ex" android:summary="Example" android:title="Example"/>
<RadioGroup
android:id="@+id/radioSex"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<RadioButton
android:id="@+id/radioMale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/radio_male"
android:checked="true" />
<RadioButton
android:id="@+id/radioFemale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/radio_female" />
</RadioGroup>
之后,在Java文件中
Preference ex;
ex = (Preference) this.findPreference("ex");
ex.setOnPreferenceClickListener(new OnPreferenceClickListener() {
});
此后我不知道该怎么办。您可以发布代码以单击首选项显示单选按钮列表?非常感谢你
答案 0 :(得分:0)
没有开箱即用的RadioGroup偏好设置。您需要通过扩展DialogPreference类来编写一个。
使用Dialog内容创建一个单独的布局文件(/res/layout/pref_radiogroup.xml)。
<?xml version="1.0" encoding="UTF-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<RadioGroup
android:id="@+id/radioSex"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<RadioButton
android:id="@+id/radioMale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/radio_male" />
<RadioButton
android:id="@+id/radioFemale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/radio_female" />
</RadioGroup>
</FrameLayout>
创建将扩展DialogPreference的RadioGroupPreference类。
public class RadioGroupPreference extends DialogPreference {
private RadioGroup radioGroup;
public RadioGroupPreference(Context context, AttributeSet attrs) {
super(context, attrs);
setDialogLayoutResource(R.layout.pref_radiogroup);
}
@Override
protected View onCreateDialogView() {
View root = super.onCreateDialogView();
radioGroup = (RadioGroup) root.findViewById(R.id.radioSex);
return root;
}
@Override
protected void onBindDialogView(View view) {
super.onBindDialogView(view);
setSelectedValue(getPersistedString("Male"));
}
@Override
protected void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
if (!positiveResult) {
return;
}
if (shouldPersist()) {
String valueToPersist = getSelectedValue();
if (callChangeListener(valueToPersist)) {
persistString(valueToPersist);
}
}
}
@Override
protected Object onGetDefaultValue(TypedArray a, int index) {
return a.getString(index);
}
private void setSelectedValue(String value) {
for (int i = 0; i < radioGroup.getChildCount(); i++) {
View view = radioGroup.getChildAt(i);
if (view instanceof RadioButton) {
RadioButton radioButton = (RadioButton) view;
if (radioButton.getText().equals(value)) {
radioButton.setChecked(true);
}
}
}
}
private String getSelectedValue() {
int radioButtonId = radioGroup.getCheckedRadioButtonId();
RadioButton radioButton = (RadioButton) radioGroup.findViewById(radioButtonId);
return (String) radioButton.getText();
}
}
现在您只需将自定义偏好设置添加到偏好设置屏幕。
<com.package.RadioGroupPreference
android:summary="Radio Group Preference Summary"
android:title="Radio Group Preference"
android:key="preference_key"
android:defaultValue="@string/radio_male" />