appcompat SeachView Widget 的自定义字体
Custom font for appcompat SeachView Widget
我面临以下问题:
我为所有 TextView、按钮、EditText 等使用自定义字体
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);
在此代码中,尽管 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)
祝你好运,希望对你有所帮助。
我正在使用 appcompat 22.1.0。查看 android.support.v7.widget.SearchView
class 的源代码,文本字段是静态嵌套 class 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 开始使用。
我面临以下问题:
我为所有 TextView、按钮、EditText 等使用自定义字体
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);
在此代码中,尽管 findItem 有效,但我不确定它是否会转换为 SearchView。因为我添加的菜单不是 xml.
之后您可以通过此代码
从SearchView中找到SearchAutoCompleteSearchView.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
class 的源代码,文本字段是静态嵌套 class 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 开始使用。