我遇到以下问题:
我为所有TextViews,Buttons,EditTexts等使用自定义字体。
Typeface myTypeface = Typeface.createFromAsset(getContext().getAssets(), "fonts/" + fontName);
setTypeface(myTypeface);
唯一没有自定义字体的View是SearchView Widget( 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>
知道如何在此视图中设置自定义字体吗?
谢谢:)
答案 0 :(得分:2)
首先你需要找到视图,
SearchView sv = (SearchView) menu.findItem(R.id. menu_item_message_search);
在此代码中,虽然 findItem 工作,但我不确定它是否会转换为SearchView。因为我添加的菜单不是用xml。
之后,您可以通过此代码从SearchView中找到 SearchAutoComplete
SearchView.SearchAutoComplete searchAutoComplete = (SearchView.SearchAutoComplete) sv.findViewById(android.support.v7.appcompat.R.id.search_src_text);
然后,您可以为 searchAutoComplete 设置字体。
searchAutoComplete.setTypeface(typeface)
祝你好运,我希望这会对你有所帮助。
答案 1 :(得分:0)
我正在使用appcompat 22.1.0。查看android.support.v7.widget.SearchView
类的源代码,文本字段是静态嵌套类SearchAutoComplete
,which relies on autoCompleteTextViewStyle
。在主题中覆盖它将允许您更改字体系列。
<强> 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。