在Android中的SearchView自定义字体

问题描述 投票:11回答:2

我一直在尝试将自定义字体设置为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..

    }
android fonts searchview android-typeface
2个回答
41
投票

这里的解决方法是首先获取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);

然后像往常一样设置字体。


1
投票

要以编程方式从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);
© www.soinside.com 2019 - 2024. All rights reserved.