You need to change the look of the search, as the default icons of a magnifying glass and a cross are gray and barely visible. The device Lenovo S650 Android 4.4.2 Api 19.

Cross it turned out to change so

int searchCloseId = searchView.getContext().getResources().getIdentifier("android:id/search_close_btn", null, null); ImageView searchClose = (ImageView) searchView.findViewById(searchCloseId); searchClose.setImageResource(R.drawable.ic_clear_white_36dp); 

The main magnifying glass icon was changed to

 int searchIconId = searchView.getContext().getResources().getIdentifier("android:id/search_button", null, null); ImageView searchIcon = (ImageView) searchView.findViewById(searchIconId); searchIcon.setImageResource(R.drawable.ic_search_white_36dp); 

But this does not change the magnifying glass that appears on the left in hint mode. This code does not help

 int searchIconMagId = searchView.getContext().getResources().getIdentifier("android:id/search_mag_icon", null, null); ImageView searchIconMag = (ImageView) searchView.findViewById(searchIconMagId); searchIconMag.setImageResource(R.drawable.ic_search_white_36dp); 

So advised user metalurgus

 ImageView searchIcon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon); searchIcon.setImageResource(R.drawable.ic_search_white_36dp); //иконка поиска 

But says empty searchIcon . Here is the log

 .: FATAL EXCEPTION: main Process: com.example.user.h18_2, PID: 8918 java.lang.NullPointerException at com.example.user.h18_2.MainActivity.onCreateOptionsMenu(MainActivity.java:75) at android.app.Activity.onCreatePanelMenu(Activity.java:2582) at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:341) at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:85) at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.onCreatePanelMenu(AppCompatDelegateImplBase.java:258) at android.support.v7.app.AppCompatDelegateImplV7.preparePanel(AppCompatDelegateImplV7.java:1311) at android.support.v7.app.AppCompatDelegateImplV7.doInvalidatePanelMenu(AppCompatDelegateImplV7.java:1591) at android.support.v7.app.AppCompatDelegateImplV7.access$100(AppCompatDelegateImplV7.java:91) at android.support.v7.app.AppCompatDelegateImplV7$1.run(AppCompatDelegateImplV7.java:130) at android.os.Handler.handleCallback(Handler.java:808) at android.os.Handler.dispatchMessage(Handler.java:103) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:5388) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:655) at dalvik.system.NativeStart.main(Native Method) 

xml menu

 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/menu_search" android:title="Search" app:showAsAction="always" android:icon="@android:drawable/ic_menu_search" app:actionViewClass="android.widget.SearchView" /> </menu> 
  • The question is still relevant! - T. Kudaibergen

1 answer 1

At the end of onCreateOptionsMenu, before

 return super.onCreateOptionsMenu(menu); 

add the following

 View searchplate = (View)searchView.findViewById(android.support.v7.appcompat.R.id.search_plate); searchplate.setBackgroundResource(R.drawable.texfield_searchview_holo_light); //Ρ„ΠΎΠ½ строки поиска. МоТно ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΠΎΠ³ΠΎ поля Π²Π²ΠΎΠ΄Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ImageView searchCloseIcon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn); searchCloseIcon.setImageResource(R.drawable.abc_ic_clear_normal); //ΠΈΠΊΠΎΠ½ΠΊΠ° закрытия поиска ImageView voiceIcon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_voice_btn); voiceIcon.setImageResource(R.drawable.abc_ic_voice_search);//ΠΈΠΊΠΎΠ½ΠΊΠ° голосового Π²Π²ΠΎΠ΄Π° поиска ImageView searchIcon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon); searchIcon.setImageResource(R.drawable.abc_ic_search); //ΠΈΠΊΠΎΠ½ΠΊΠ° поиска 
  • During the insertion of the icon says NullPointerException Something compatibility, or something. - T. Kudaibergen