当前位置: 首页 > 知识库问答 >
问题:

如何在ListView和AlertDialog中设置自定义字体?

邰钟展
2023-03-14

我创建了ListView,当我单击列表项时,它将打开带有NegativeButton的AlertDialog消息。这些都做得很好。现在,我想将自定义字体设置为listview项和AlertDialog的标题、消息和NegativeButton的字体。甚至我也尝试了自定义字体库,但没有得到预期的输出。这里附上我的试用代码如下。谁能告诉我出了什么问题吗?

public class NewActivity extends AppCompatActivity {

ListView listView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_new);

    Calligrapher calligrapher = new Calligrapher(this);
    calligrapher.setFont(this, "Acme-Regular.ttf", true);

    listView = findViewById(R.id.list1);
    final ArrayList<String> concept = new ArrayList<String>();
    concept.add("Who is the captain of Indian Cricket Team?");
    concept.add("When we are celebrating Teacher's Day?");
    concept.add("When we are celebrating Women's Day?");

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
android.R.layout.simple_list_item_1, concept);
    listView.setAdapter(adapter);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @SuppressLint("ResourceType")
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            AlertDialog.Builder adb = new AlertDialog.Builder(NewActivity.this);
            switch (i)
            {

                case 0:
                    adb.setTitle(concept.get(i));
                    adb.setMessage("Virat Kholi");
                    adb.setNegativeButton("Close", null);
                    adb.show();
                    break;

                case 1:
                    adb.setTitle(concept.get(i));
                    adb.setMessage("September 5");
                    adb.setNegativeButton("Close", null);
                    adb.show();
                    break;

                case 2:
                    adb.setTitle(concept.get(i));
                    adb.setMessage("March 8");
                    Typeface customTypeOne = Typeface.createFromAsset(getAssets(), "Acme-Regular.ttf");
                    adb.setTypeface(customTypeOne);
                    adb.setNegativeButton("Close", null);
                    adb.show();
                    break;
   }
  }
 });
 }
}

xml文件

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".NewActivity">

<ListView
    android:id="@+id/list1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:layout_editor_absoluteX="8dp"
    tools:layout_editor_absoluteY="8dp"
    android:fontFamily="assets/Acme-Regular.ttf"
    tools:ignore="MissingConstraints" />


</android.support.constraint.ConstraintLayout>

共有3个答案

杜成和
2023-03-14

有两种方法可以更改text view字体系列

xml文件中的第一个:

默认情况下,android studio字体保存在res的字体文件夹中。如果要使用这些字体,请添加此行应用程序:fontFamily=“@font/alegreya\u bold”

java或实用代码排名第二

 TextView textView= view.findViewById(R.id.textview);
    textView.setTextColor(Color.BLACK);
    textView.setTextSize(13);
    Typeface avnier_roman = Typeface.createFromAsset(context.getAssets(), "AvenirLTStd-Roman.otf");
    textView.setTypeface(avnier_roman); 
林弘文
2023-03-14

您可以通过编程方式使用字体设置字体

    Typeface custom_font = Typeface.createFromAsset(getAssets(), "fonts/font name.ttf");

     textview.setTypeface(custom_font);
毛越
2023-03-14

代替

 android:fontFamily="assets/Acme-Regular.ttf"

https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml

 android:fontFamily="@font/Acme-Regular.ttf"
 类似资料:
  • 问题内容: 如何(如果可能)如何在Assets文件夹中的字体中设置ActionBar标题文本(仅-不是标签文本)中的自定义字体?我不想使用android:logo选项。 问题答案: 我同意不完全支持此操作,但这就是我所做的。您可以将自定义视图用于操作栏(它将显示在图标和操作项之间)。我正在使用自定义视图,并且已禁用本机标题。我所有的活动都继承自一个活动,该活动在onCreate中包含以下代码: 我

  • 我想在使用AlertDialog时使用android插件库中的自定义字体。下面是使用自定义字体显示警报对话框的代码。 我收到错误: 我已将字体文件放在Unity的“资产/资源”文件夹中。因此,在最终apk中,字体资源显示在“资产/字体”文件夹中。但是,这并不重要,因为我可以在其他文本视图中使用自定义字体。 唯一的问题是,我相信它找不到AlertDialog的消息和标题。任何帮助都将不胜感激。

  • 我的问题是如何在android中的自定义listview中更改印地语字体。我正在使用此代码Typeface hIndiFont=Typeface.createFromAsset(getAsset(),"fonts/DroidHindi.ttf "); // 将menuItems添加到ListView 请帮帮我。提前谢谢!!!!!!!!! 我正在重写getView方法,但无法工作。请帮帮我。

  • 我正在使用MPAndroidChart显示一个相对简单的条形图。 有2件事我需要设置,我不知道如何自定义: > 我需要为每个条添加文本,而不是简单的值,每个条本身也有样式。 在每个条的顶部,我需要放置各种类型的可绘制材料来覆盖它的宽度(例如一个条中高度为2dp的蓝色,或另一个条上高度相同的黄色渐变)。 下面是我需要做的一个演示: > 我知道我也可以通过使用添加图标,但这似乎不适用于应该使用整个条形

  • 我有一个ListView和一个自定义适配器。问题是我看不到listview和数据,只看到一个白色页面。 在片段中我有: 在CustomAdapter中,我有: 我错在哪里? 更新: 谢谢,如果我想在ImageButton上设置onClickListener,我该怎么做?。。我尝试: 但问题是,当我单击例如第一个项目viewHolder时。mNomeView。getText()。toString()

  • 问题内容: 我最近开始在Node.js中工作,在app.js文件中有以下一行: 现在,如何设置自己的自定义favicon.ico? 问题答案: 在Express 4中 安装收藏夹中间件,然后执行以下操作: 或者更好,使用模块: (请注意,此解决方案也可以在Express 3应用中使用) 在Express 3中 根据API,接受一个location参数: 大多数时候,您可能希望这样做(如vsync建