Android appcompat SeachView小部件的自定义字体

Android appcompat SeachView小部件的自定义字体,android,android-appcompat,Android,Android Appcompat,我面临以下问题: 我对所有文本视图、按钮、编辑文本等使用自定义字体 Typeface myTypeface = Typeface.createFromAsset(getContext().getAssets(), "fonts/" + fontName); setTypeface(myTypeface); 唯一没有自定义字体的视图是SearchView小部件(android.support.v7.Widget.SearchView),它通过xml添加到菜单中 menu.xml <?xml

我面临以下问题:

我对所有文本视图、按钮、编辑文本等使用自定义字体

Typeface myTypeface = Typeface.createFromAsset(getContext().getAssets(), "fonts/" + fontName);
setTypeface(myTypeface);
唯一没有自定义字体的视图是SearchView小部件(android.support.v7.Widget.SearchView),它通过xml添加到菜单中

menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
      xmlns:android="http://schemas.android.com/apk/res/android">
      <item android:id="@+id/menu_item_message_search"
          android:title="@string/search_placeholder"
          android:icon="@android:drawable/ic_menu_search"
          app:showAsAction="ifRoom|collapseActionView"
          app:actionViewClass="android.support.v7.widget.SearchView" />
</menu>

知道如何为这个视图设置自定义字体吗


谢谢:)

首先您需要查找视图

SearchView sv = (SearchView) menu.findItem(R.id. menu_item_message_search);
在这段代码中,我不确定它是否会转换为SearchView,尽管findItem可以工作。因为我添加了菜单而不是xml

之后,您可以通过以下代码从SearchView中找到SearchAutoComplete

SearchView.SearchAutoComplete searchAutoComplete = (SearchView.SearchAutoComplete) sv.findViewById(android.support.v7.appcompat.R.id.search_src_text);
然后,您可以为searchAutoComplete设置字体

searchAutoComplete.setTypeface(typeface)

祝你好运,我希望这会对你有所帮助。

我正在使用appcompat 22.1.0。查看android.support.v7.widget.SearchView类的源代码,文本字段是一个静态嵌套类
SearchAutoComplete
。在主题中覆盖此选项将允许您更改字体系列

styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light">
    ...
    <item name="android:autoCompleteTextViewStyle">@style/AutoCompleteTextView</item>
</style>

<style name="AutoCompleteTextView" parent="Widget.AppCompat.Light.AutoCompleteTextView">
    ...
    <item name="android:textAppearance">@style/AutoCompleteTextViewTextAppearance</item>
</style>

<style name="AutoCompleteTextViewTextAppearance" parent="TextAppearance.AppCompat.Medium.Inverse">
    <item name="android:fontFamily">sans-serif-thin</item>
</style>

...
@样式/自动完成文本视图
...
@样式/自动完成文本视图文本外观
无衬线薄
请注意,
android:fontFamily
仅可从API 16获得。

检查此项