我是先继承ListPreference类,重载onPrepareDialogBuilder方法,在里面改变AlertDialog,就像这样:
public class ListPreferenceEx extends ListPreference {
public ListPreferenceEx(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
super.onPrepareDialogBuilder(builder); // To change body of overridden
builder.setNegativeButton(null, null);
builder.setTitle(null);
}
}
上面代码可以成功去掉builder的按钮和标题,但是那个list的文字大小怎样变呢,因为builder没有设置theme的函数,只能在构造时指定theme,我试了如下两种方法,都没有能达到效果:
1
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
builder = new AlertDialog.Builder(new ContextThemeWrapper(this.getContext(), R.style.ListDlgTheme));
super.onPrepareDialogBuilder(builder);
}
2
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
builder = new AlertDialog.Builder(new ContextThemeWrapper(this.getContext(), R.style.ListDlgTheme));
super.onPrepareDialogBuilder(builder);
}
求指点!!!!!!!!!
------解决方案--------------------
AlerDialog可以加载xml,自定义一个AlerDialog就行了,,,