AlertDialog.Builder使用
AlertController.AlertParams构建对话框.我检查了AlertDialog.Builder #create()调用AlertController.AlertParams #application()如果设置了项目,则创建ListView并分配适配器(
AlertParams#createListView()).
我基于createListView源创建了自定义适配器并修改了android单元格布局:
public static class TypefaceDialog extends DialogFragment {
private static final CharSequence[] items = {
"A","B","C","D","E","F","G"
};
private static final boolean[] checked = {
true,false,true,false
};
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Typeface fontTypeface = Typeface.createFromAsset(getActivity().getAssets(),"Arial Bold.ttf");
ListAdapter adapter = new ArrayAdapter(
getActivity(),android.R.layout.select_dialog_multichoice,android.R.id.text1,items) {
@Override
public View getView(final int position,View convertView,ViewGroup parent) {
View view = super.getView(position,convertView,parent);
CheckedTextView textView = (CheckedTextView)view.findViewById(android.R.id.text1);
textView.setChecked(checked[position]);
textView.setTypeface(fontTypeface);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CheckedTextView view = (CheckedTextView)v;
view.setChecked(!view.isChecked());
checked[position] = view.isChecked();
}
});
return view;
}
};
return new AlertDialog.Builder(getActivity())
.setAdapter(adapter,null)
.setPositiveButton("OK",null)
.create();
}
}