我一直在尝试将自定义字体设置为android.support.v7.widget.SearchView
查询提示和在View.I中输入的文本尝试通过创建TypeFace对象动态地将字体从assests设置为searchView,但问题是“SearchView没有包含一个setTypeface(Typeface tf)方法。“我确实尝试过自定义的SearchView类但找不到。
private void setFont(String font1, String font2, String font3)
{
Typeface tf = null;
tf = UiUtil.changeFont(MainActivity.this, font1);
btn1.setTypeface(tf);
tf = UiUtil.changeFont(MainActivity.this, font2);
btn2.setTypeface(tf);
tf = UiUtil.changeFont(MainActivity.this, font3);
btn3.setTypeface(tf);
tf = UiUtil.changeFont(MainActivity.this, font3);
// no set typeface method..
}
这里的解决方法是首先获取searchView的textView,然后更改textView的字体:
TextView searchText = (TextView)
searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
Typeface myCustomFont = Typeface.createFromAsset(getAssets(),"fonts/myFont.ttf");
searchText.setTypeface(myCustomFont);
或者,如果您不使用appcompatv7:
int id = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
TextView searchText = (TextView) searchView.findViewById(id);
然后像往常一样设置字体。
要以编程方式从xml字体文件夹更改searchview中的字体系列:
Typeface tf = ResourcesCompat.getFont(dis,R.font.montserrat_regular);
TextView searchText = (TextView)search_view.findViewById(android.support.v7.appcompat.R.id.search_src_text);
searchText.setTypeface(tf);