Android中的字体预览警报对话框

时间:2018-02-04 13:24:42

标签: fonts

我想在警告对话框中创建字体预览,但我无法做到这一点我可以选择字体而且我不知道如何生成字体预览。如果有人可以帮助我,我将不胜感激。

 AlertDialog.Builder builderSingle = new AlertDialog.Builder(MainActivity.this);
            builderSingle.setIcon(R.drawable.lg_logo);
            builderSingle.setTitle("Select any font");

            final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.select_dialog_singlechoice);


            arrayAdapter.add("Font1");
            arrayAdapter.add("Font2");
            arrayAdapter.add("Font3");

这种方式我能够创建并可以选择字体而不是Font1和Font2我想在线搜索它们的预览,但没有帮助。

1 个答案:

答案 0 :(得分:1)

如果我没错。你正在努力实现像下面的形象。

Result image

所以这里是你的问题的答案。我使用单选按钮从列表中进行单选。

在这里我使用自定义布局并显示带有预览textview的所有单选按钮,并使用setview()方法在 alertdialog中使用此布局。

这是此预览布局的xml布局代码。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <RadioGroup
        android:layout_width="match_parent"
        android:id="@+id/radioGroup"
        android:layout_margin="12dp"
        android:layout_height="wrap_content" >

        <RadioButton
            style="@style/RadioButton"
            android:id="@+id/radioButton"
            android:layout_width="match_parent"
            android:fontFamily="@font/luckiestguyregular"
            android:layout_height="wrap_content"
            android:textSize="18dp"
            android:layout_weight="1"
            android:text="RadioButton" />

        <RadioButton
            style="@style/RadioButton"
            android:textSize="18dp" 
            android:id="@+id/radioButton2"
            android:layout_width="match_parent"
            android:fontFamily="@font/notomonoregular"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="RadioButton" />

        <RadioButton
            style="@style/RadioButton"
            android:textSize="18dp"
            android:id="@+id/radioButton3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:fontFamily="@font/merriweatherblack"
            android:layout_weight="1"
            android:text="RadioButton" />
    </RadioGroup>
</LinearLayout>

这里我使用单选按钮fontFamily属性来显示该特定单选按钮的预览。

<强> android:fontFamily="@font/merriweatherblack"

用于查看带有自定义布局的alertdialog的javacode文件。

LayoutInflater inflater = Main2Activity.this.getLayoutInflater();
        view1 = inflater.inflate(R.layout.customlayoutforfont, null);
        Button bt = findViewById(R.id.bt);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                builder = new AlertDialog.Builder(Main2Activity.this)
                        .setTitle("Choose fonts")
                        .setView(view1)
                        .setPositiveButton("set", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                RadioGroup group = view1.findViewById(R.id.radioGroup);

                                Log.i("RadioButton", "ID " + group.getCheckedRadioButtonId());
                                if (group.getCheckedRadioButtonId() == R.id.radioButton) {
                                  editor=getSharedPreferences("FontShared",MODE_PRIVATE).edit();
                                  editor.putString("fonts","luckiestguyregular.ttf").commit();
                                    recreate();

                                }
                                else if(group.getCheckedRadioButtonId()== R.id.radioButton2){
                                    editor=getSharedPreferences("FontShared",MODE_PRIVATE).edit();
                                    editor.putString("fonts","notomonoregular.ttf").commit();
                                    recreate();
                                }
                                else if(group.getCheckedRadioButtonId()== R.id.radioButton3){
                                    editor=getSharedPreferences("FontShared",MODE_PRIVATE).edit();
                                    editor.putString("fonts","merriweatherblack.ttf").commit();
                                    recreate();
                                }
                            }

                        })
                        .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                            }
                        });

                AlertDialog alertDialog = builder.create();
                alertDialog.show();


            }
        });

要知道选择了哪个单选按钮,请使用以下代码。

首先使用

从该custompreviewfont布局中查找无线电组

RadioGroup group = view1.findViewById(R.id.radioGroup);

然后使用名为radiogroup.getCheckedRadioButtonId()的radioGroup视图方法获取当前选中的单选按钮ID

最后我使用了if-else if语句来执行字体应用操作

if  (group.getCheckedRadioButtonId() == R.id.radioButton) {
       //code of first radiobutton
}
else if(group.getCheckedRadioButtonId() == R.id.radioButton2){
    //code of second radiobutton
}

...等

希望您觉得这很有帮助。