2009-09-09 2 views

ответ

6

Использовать ListPreference. Для этого нужно иметь более одного переключателя, чтобы он имел смысл (иначе это будет только флажок).

Если по какой-то причине вы не хотите использовать ListPreference, возьмите исходный код CheckBoxPreference из дерева с открытым исходным кодом Android и переместите свою собственную преференцию. Затем вы можете указать свою пользовательскую реализацию в XML предпочтений с использованием пространства имен (например, com.foo. RadioButtonPreference).

+0

Вы не можете иметь резюме (описание) ниже каждую запись в ListPreference, не так ли? Поэтому RadioButtonPreference будет очень полезен. – AnAurelian

0

Вы можете использовать пользовательский класс, простирающийся от CheckBoxPreference, как это:

public class RadioButtonPreference extends CheckBoxPreference { 

    public RadioButtonPreference(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     setWidgetLayoutResource(R.layout.preference_widget_radiobutton); 
    } 

    public RadioButtonPreference(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     setWidgetLayoutResource(R.layout.preference_widget_radiobutton); 
    } 

    public RadioButtonPreference(Context context) { 
     this(context, null); 
    } 

    @Override 
    public void onClick() { 
     if (this.isChecked()) { 
      return; 
     } 
     super.onClick(); 
    } 
} 

Затем нужно создать файл preference_widget_radiobutton.xml макета:

<?xml version="1.0" encoding="utf-8"?> 
<!-- Layout used by CheckBoxPreference for the checkbox style. This is inflated 
    inside android.R.layout.preference. --> 
<RadioButton android:id="@+android:id/checkbox" 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:clickable="false" 
      android:focusable="false"/> 
Смежные вопросы