Поместите прокрутку прогресса в SearchView?

Я использую SearchView в своей работе. Когда пользователь вводит данные, я выполняю поисковые запросы на сервере. Я хочу указать, что происходит какая-то деятельность. Можно ли отображать счетчик прогресса в SearchView?

В противном случае, как люди справляются с этим – создаем ли пользовательский родительский макет панели действий и внутри него внедряем SearchView?

<LinearLayout orientation="horizontal"> <SearchView /> <ProgressBar /> </LinearLayout> 

спасибо

Сначала создайте макет для панели прогресса. Подобный XML должен выполнять эту работу:

R.layout.loading_icon

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ProgressBar style="?android:attr/progressBarStyleLarge" android:layout_width="25dp" android:layout_height="25dp" android:id="@+id/search_progress_bar" android:layout_marginTop="5dp" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" /> </RelativeLayout> 

Затем создайте две функции. Один, чтобы показать индикатор выполнения вашего поиска и другие, чтобы скрыть его:

 public void showProgressBar(SearchView searchView, Context context) { int id = searchView.getContext().getResources().getIdentifier("android:id/search_plate", null, null); if (searchView.findViewById(id).findViewById(R.id.search_progress_bar) != null) searchView.findViewById(id).findViewById(R.id.search_progress_bar).animate().setDuration(200).alpha(1).start(); else { View v = LayoutInflater.from(context).inflate(R.layout.loading_icon, null); ((ViewGroup) searchView.findViewById(id)).addView(v, 1); } } public void hideProgressBar(SearchView searchView) { int id = searchView.getContext().getResources().getIdentifier("android:id/search_plate", null, null); if (searchView.findViewById(id).findViewById(R.id.search_progress_bar) != null) searchView.findViewById(id).findViewById(R.id.search_progress_bar).animate().setDuration(200).alpha(0).start(); } 

Я знаю, что это не входит в SearchView, но это, безусловно, самый простой способ предоставить индикацию прогресса в ActionBar, найденном здесь http://blog.denevell.org/android-progress-spinner.html :

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); setContentView(R.layout.activity_main); // Turn it on setProgressBarIndeterminateVisibility(true); // And when you want to turn it off setProgressBarIndeterminateVisibility(false); } 

Если вы действительно хотите, чтобы прогресс появился в SearchView, я бы предположил, что вы можете использовать FrameLayout вместо LinearLayout (или, по крайней мере, как родительский), помещая прогресс в нижней части XML (который разместит его поверх SearchView ).