【问题标题】:Android: Own Font in ListViewAndroid:ListView中的自己的字体
【发布时间】:2012-03-20 20:36:48
【问题描述】:

我正在尝试在 Android OS 2.3.x 中使用 Java 在列表视图中拥有自己的字体

阅读以下链接后,我被卡住了:

http://developer.android.com/guide/topics/ui/themes.html http://stackoverflow.com/questions/4576441/custom-font-in-android-listview http://androidforums.com/android-lounge/143874-custom-typface-listview-row-layout.html

我不能在这里发布有用的东西。

我的主要问题是:

  • 为什么我不能使用 setTypeface 更改列表视图的字体?
  • 为什么我不能在我的应用程序中为所有文本定义一个字体而不将它再次放入每个活动中?
  • 是否有处理此问题的文档? Android SDK 文档缺乏大量详细信息,例如 otf 字体在哪个版本上工作。

我知道我必须学习很多东西,并且我已经准备好了尽可能多的关于这个主题的书籍。但是经过两天的猜测和尝试,我不得不寻求帮助。

可能有人可以将我推向正确的方向;)

为了给你一个小想法,我尝试清理一些代码:

文件:res/layout/scores.xml (sn-p from it)

<ListView
    android:id="@+id/android:list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#00000000"
    android:cacheColorHint="#00000000"
    android:transcriptMode="disabled" >
</ListView>

文件:src/notneededasinfo/ScoresActivity.java (sn-p from it)

Resources myResources = getResources();

Typeface tf = Typeface.createFromAsset(myResources.getAssets(),"fonts/searstower.ttf");
TextView tv = (TextView) findViewById(android.R.id.list);
tv.setTypeface(tf);

谢谢帮助!

【问题讨论】:

  • @您的代码显示一些错误?或者是什么问题?
  • 问题是,我没有得到任何异常或错误,并且字体没有改变。我想,这只是我这边的一个小问题,就像一个错字。
  • 只需将这个 myResources.getAssets() 修改为 getApplicationContext().getAssets() 并尝试。

标签: android listview fonts


【解决方案1】:
TextView tv = (TextView) findViewById(android.R.id.list);

您需要有一个文本视图来设置字体。您缺少列表行视图。

【讨论】:

    【解决方案2】:

    我有一个你的问题的答案

    为什么我不能为我的应用程序中的所有文本定义一个字体 再把它放在每一个活动中?

    这是一个已知问题,但很容易解决。只需实现一个扩展 Activity 的自定义活动类并覆盖 setContentView() 方法。在此方法中,您可以获得当前视图的所有 TextViews 并设置 Typface

    请看这里:Add custom font for complete android application

    【讨论】:

      【解决方案3】:

      嗯...首先 android:textStyle 和 setTypeface(Typeface) 不是 ListView 的属性和函数,它来自 TextView。

      尝试使用本教程:http://developer.android.com/resources/tutorials/views/hello-listview.html

      无论如何,您必须定义一个 .xml 文件来定义 ListView 中元素的样式。在我发布的链接上,您可以在主题 4 上看到处理程序 onCreate 以下行:

      setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, COUNTRIES));
      

      因此,您必须在上面用作 R.layout.list_item 的文件 list_item.xml 上定义 ListView 项的布局。在这个文件 list_item.xml 上,您可以定义新的 TextViews 或 EditTexts 或其他任何内容,并为每个 View 单独更改字体。

      希望对你有帮助...

      【讨论】:

      • 还有其他...您的 R.id.list 是一个 ListView,如您发布的 xml 代码中所定义。您不能像在此处那样将其与 TextView 关联:TextView tv = (TextView) findViewById(android.R.id.list);
      • AAHH... 这可能是我的问题。我认为 ListView 是一个普通的小部件。但它只是结果行的容器......好吧......给我一些时间。我知道有事情要做。谢谢!
      • 我试过了,但是不能在xml文件中设置自己的字体。您可以更改字体颜色、字体样式(粗体等)和字体大小,但不能更改字体类型。我错过了一些极其重要的知识。一旦我得到我想念的东西,我就会回到这个问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多