Поместите прокрутку прогресса в 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 ).

Intereting Posts
Как уменьшить размер mp3-файла в Android, созданного с помощью MediaRecorder Если я опубликую обновление в google play без увеличения кода версии, будут доступны новые версии для новых установок? Каков практический эффект viewPager.setOffscreenPageLimit (3) ;? Как использовать View.OnTouchListener вместо onClick «Файл пакета недействителен», решение со стороны разработчика (Android) Неверный исходный файл при отладке с помощью Android Studio Приложение неверно настроено для входа в Facebook: проблема интеграции Android Facebook Привязка данных Android – невозможно вызвать обработчик кликов ОШИБКА: «Не удается разрешить символ» @ string / edit_message »« Android Studio Как считывать данные из памяти телефона из Google Случайные атаки приложений на Android Wear 5.0.X ActionBar onNavigationItemSelected не вызывается, когда выбранный элемент остается тем же Android Studio – панель действий удалить Интеграция видеолента в Android для прямой трансляции Android, Завершить все действия