Android – SearchView – setTypeface недоступен

По какой-то причине я не могу установить Typeface в SearchView. Вот мой код, чтобы попытаться изменить шрифт:

searchView = findViewById(R.id.searchview_invite_friends_search_contact);
Typeface myFont = Typeface.createFromAsset(getAssets(),"fonts/myFont.ttf");
searchView.setTypeface(myFont);

Я определил это в xml следующим образом:

<SearchView
        android:id="@+id/searchView"
        android:layout_width="match_parent"
        android:queryHint="@string/searchview_invite_friends_search_contact"
        android:iconifiedByDefault="false"
        android:layout_centerHorizontal="true"
        android:background="@android:color/white"
        android:searchIcon="@drawable/icon_search"
        android:focusable="false"
        android:layout_height="45dp"
        android:queryBackground="@color/transparent"
        android:gravity="center_horizontal"
        >

person Isabelle    schedule 10.10.2016    source источник


Ответы (3)


SearchView содержит TextView, который вам сначала нужно найти, чтобы изменить его Typeface следующим образом.

 TextView searchText = (TextView) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
 searchText.setTypeface(<your Typeface>);

Это для SearchView в библиотеке поддержки Android v7.

Для обычного SearchView в пакете android.widget см. https://stackoverflow.com/a/30915643/3233251

person Slamper    schedule 10.10.2016
comment
Работает определенно намного лучше :) Спасибо! - person Isabelle; 10.10.2016

TextView searchText = (TextView) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text); Тип шрифта = Typeface.createFromAsset(getAssets(),"fonts/siemreap.ttf"); searchText.setTypeface (тип);

person chhengheng    schedule 23.12.2017
comment
Попробуйте немного объяснить, чтобы они знали, что вы предлагаете. Дайте контекст. - person Nightforce2; 23.12.2017

Возможность через xml (не проверено на разных версиях ОС и устройствах):

Создайте ресурс, идентичный @layout/abc_search_view. Назовем его search_field.xml

Внутри search_field.xml задайте семейство шрифтов для элемента ‹view class=androidx.appcompat.widget.SearchView$SearchAutoComplete›.

...
<view class="androidx.appcompat.widget.SearchView$SearchAutoComplete"
              android:id="@+id/search_src_text"
              ...
              app:fontFamily="@font/[YOUR_FONT_RESOURCE]
              />
...

Создайте стиль ресурса... назовите его my_search_view_style

<style name="my_search_view_style" parent="Widget.AppCompat.SearchView">
   <item name="layout">@layout/search_field</item>
</style>here

Наконец, установите стиль my_search_view_style в SearchView.

<androidx.appcompat.widget.SearchView
    android:id="@+id/searchView"
    style="@style/my_search_view_style"
    ...
/>
person Kong Far    schedule 01.09.2020