3

以下のように、アラート ダイアログのタイトルにカスタム フォントを適用できました。

 AlertDialog.Builder builder = new AlertDialog.Builder(this);

 TextView Mytitle = new TextView(this);
 Mytitle.setText("My Custom title"); 
 Mytitle.setTextSize(20);
 Mytitle.setPadding(5, 15, 5, 5);
 Mytitle.setGravity(Gravity.CENTER);
 Mytitle.setTypeface(Typeface.createFromAsset(this.getAssets(), "myfont.ttf"));
 builder.setCustomTitle(Mytitle);

警告ダイアログには、下の行によって取り込まれた複数選択アイテムのリストが表示されます。

 builder.setMultiChoiceItems(MyItems, MycheckedItems, MyDialogListener);

 //where MyItems is CharSequence[] Array, MycheckedItems => boolean[] array,
 //MyDialogListener => DialogInterface.OnMultiChoiceClickListener

これらの複数選択項目にもフォントを適用したいと思います。これどうやってするの?出来ますか?

4

3 に答える 3

5

AlertDialog.BuilderAlertController.AlertParamsを使用してダイアログを作成します。AlertDialog.Builder#create() は、項目が設定されている場合 ( AlertParams#createListView() )、ListView を作成してアダプターを割り当てる AlertController.AlertParams#apply() を呼び出すことを調べました。

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, false, true, true, false, false
        };

        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            final Typeface fontTypeface = Typeface.createFromAsset(getActivity().getAssets(), "Arial Bold.ttf");
            ListAdapter adapter = new ArrayAdapter<CharSequence>(
                    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();
        }

    }
于 2013-02-26T11:41:16.033 に答える
1

AlertDialog.Builderの代わりに、次のようなダイアログを使用します。

R.layout.vv内で、必要に応じてカスタマイズします。

Dialog dailog=new Dialog(this);
dailog.setContentView(R.layout.vv);
dailog.show();
于 2013-02-26T10:33:33.170 に答える
1

カスタム項目レイアウトで複数選択用のカスタム アダプターを作成してみてください。

アクティビティまたはアプリケーション内でTypeface をstaticとして設定します

public static Typeface mFont;
public void OnCreate(){
mFont =Typeface.createFromAsset(this.getAssets(), "myfont.ttf");
}

カスタム アダプターで、静的な書体を使用して convertView から textview の書体を設定します。

于 2013-02-26T09:35:40.873 に答える