Cute library to implement SearchView in a Material Design Approach

Overview

MaterialSearchView

Cute library to implement SearchView in a Material Design Approach. Works from Android API 14 (ICS) and above.

sample sample

Get it on Google Play

#Native version Maybe it would be useful to take a look into the new official approach http://www.materialdoc.com/search-filter/

Usage

Add the dependencies to your gradle file:

	dependencies {
    	compile 'com.miguelcatalan:materialsearchview:1.4.0'
	}

Add MaterialSearchView to your layout file along with the Toolbar (Add this block at the bottom of your layout, in order to display it over the rest of the view):

    <!— Must be last for right layering display —>
    <FrameLayout
        android:id="@+id/toolbar_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/theme_primary" />

        <com.miguelcatalan.materialsearchview.MaterialSearchView
            android:id="@+id/search_view"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </FrameLayout>

Add the search item into the menu file:

	<item
        android:id="@+id/action_search"
        android:icon="@drawable/ic_action_action_search"
        android:orderInCategory="100"
        android:title="@string/abc_search_hint"
        app:showAsAction="always" />

Add define it in the onCreateOptionsMenu:

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);

        MenuItem item = menu.findItem(R.id.action_search);
        searchView.setMenuItem(item);

        return true;
    }

Set the listeners:

	MaterialSearchView searchView = (MaterialSearchView) findViewById(R.id.search_view);
	searchView.setOnQueryTextListener(new MaterialSearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                //Do some magic
                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                //Do some magic
                return false;
            }
        });
        
        searchView.setOnSearchViewListener(new MaterialSearchView.SearchViewListener() {
            @Override
            public void onSearchViewShown() {
                //Do some magic
            }

            @Override
            public void onSearchViewClosed() {
                //Do some magic
            }
        });

Use VoiceSearch

Allow/Disable it in the code:

	searchView.setVoiceSearch(true); //or false

Handle the response:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == MaterialSearchView.REQUEST_VOICE && resultCode == RESULT_OK) {
            ArrayList<String> matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
            if (matches != null && matches.size() > 0) {
                String searchWrd = matches.get(0);
                if (!TextUtils.isEmpty(searchWrd)) {
                    searchView.setQuery(searchWrd, false);
                }
            }

            return;
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

Add suggestions

Define them in the resources as a string-array:

    <string-array name="query_suggestions">
        <item>Android</item>
        <item>iOS</item>
        <item>SCALA</item>
        <item>Ruby</item>
        <item>JavaScript</item>
    </string-array>

Add them to the object:

	searchView.setSuggestions(getResources().getStringArray(R.array.query_suggestions));

Style it!

    <style name="MaterialSearchViewStyle">
        <!-- Background for the search bar -->
        <item name="searchBackground">@color/theme_primary</item>

        <!-- Change voice icon -->
        <item name="searchVoiceIcon">@drawable/ic_action_voice_search_inverted</item>

        <!-- Change clear text icon -->
        <item name="searchCloseIcon">@drawable/ic_action_navigation_close_inverted</item>

        <!-- Change up icon -->
        <item name="searchBackIcon">@drawable/ic_action_navigation_arrow_back_inverted</item>
        
        <!-- Change icon for the suggestions -->
        <item name="searchSuggestionIcon">@drawable/ic_suggestion</item>

        <!-- Change background for the suggestions list view -->
        <item name="searchSuggestionBackground">@android:color/white</item>

        <!-- Change text color for edit text. This will also be the color of the cursor -->
        <item name="android:textColor">@color/theme_primary_text_inverted</item>

        <!-- Change hint text color for edit text -->
        <item name="android:textColorHint">@color/theme_secondary_text_inverted</item>

        <!-- Hint for edit text -->
        <item name="android:hint">@string/search_hint</item>
    </style>

#Custom cursor Create the drawable:

    <shape xmlns:android="http://schemas.android.com/apk/res/android">
    	<size android:width="2dp" />
    	<solid android:color="@color/theme_primary" />
    </shape>

And add it to the object:

	searchView.setCursorDrawable(R.drawable.custom_cursor);

Using AppBarLayout?

It is a little bit tricky but can be achieved using this:

	<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!— Irrelevant stuff —>
    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/appbarlayout"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

    <!— Must be last for right layering display —>
    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbarlayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/search_layover_bg">

        <FrameLayout
            android:id="@+id/toolbar_container"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="@color/theme_primary" />

            <com.miguelcatalan.materialsearchview.MaterialSearchView
                android:id="@+id/search_view"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:visibility="gone" />
        </FrameLayout>

        <android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/theme_primary"
            app:tabGravity="fill"
            app:tabMode="fixed" />

    </android.support.design.widget.AppBarLayout>

</RelativeLayout>

Bonus

Close on backpressed:

    @Override
    public void onBackPressed() {
        if (searchView.isSearchOpen()) {
            searchView.closeSearch();
        } else {
            super.onBackPressed();
        }
    }

Help me

Pull requests are more than welcome, help me and others improve this awesome library.

The code is based in the Krishnakapil original concept.

License

Copyright 2015 Miguel Catalan Bañuls

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

	http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Comments
  • Usage with TabLayout and AppBarLayout

    Usage with TabLayout and AppBarLayout

    I'm using the MaterialSearchView with TabLayout, AppBarLayout and RecyclerView. The toolbar is hidden when the list is scrolling. I tried the following layouts:

    A. The search view is below tabs:

    AppBarLayout
      ToolBar
      TabLayout
      MaterialSearchView
    /AppBarLayout
    

    B. The toolbar scrolling doesn't work anymore:

    AppBarLayout
      FrameLayout  
        ToolBar
        MaterialSearchView
      /FrameLayout  
      TabLayout
    /AppBarLayout
    

    What I expect is the effect like the "My apps" section in the Play Store app. The search view is actually placed above the activity though. Any suggestions?

    question fixed 
    opened by Songroid 21
  • Request: let MaterialSearchView to be viewed even in UI-editor preview window

    Request: let MaterialSearchView to be viewed even in UI-editor preview window

    it has NPE:

    java.lang.NullPointerException   at com.miguelcatalan.materialsearchview.MaterialSearchView.isVoiceAvailable(MaterialSearchView.java:270)   at com.miguelcatalan.materialsearchview.MaterialSearchView.showVoice(MaterialSearchView.java:444)   at

    enhancement help wanted 
    opened by AndroidDeveloperLB 15
  • problem with lollipop and above

    problem with lollipop and above

    Hi! good library, thanks for it! but i got some problem with devices with lollipop and above. when i am clicking on search icon the keyboard is open, search is working. but... ordinary title is showing and edit text doesn't show... try this problem on few devices with lollipop

    duplicate 
    opened by pro100svitlo 12
  • InflateException Error

    InflateException Error

    Hello, I was using your library and i love it ! Unfortunately, after google released new update, i cannot inflate your class.

    Caused by: android.view.InflateException: Binary XML file line #27: Error inflating class com.miguelcatalan.materialsearchview.MaterialSearchView

    Can you help me about it?

    opened by WrathChaos 11
  • Why is onQueryTextChange set to empty after clicking the search button?

    Why is onQueryTextChange set to empty after clicking the search button?

    I love everything about this library, except for the fact that I do not understand WHY the variable "newText" is set to empty after clicking the submit button. It does not make any sense at all.

    I wan to filter an adapter by calling a custom filter(String string) method inside the onQueryTextChange method provided by your library. It works until I press the enter button on my keyboard. After that it will clear the variable newText and as a result the filter will get cleared as well.

    Current code

    @Override public boolean onQueryTextChange(String newText) { textFilter = newText; if (adapter != null) { adapter.filter(textFilter); } return false; }

    Is there a way to fix this behavior?

    opened by zunjae 7
  • problem to add setSuggestions

    problem to add setSuggestions

    when i add this code searchView.setSuggestions(getResources().getStringArray(R.array.query_suggestions)); search view fill other views of app on runtime but by tapping on search button and press back other views showing

    bug 
    opened by sepehr-alipour 7
  • Item Click does not working

    Item Click does not working

    Item click does nothing. For example :

    materialSearchView.setOnItemClickListener((adapterView, view, i, l) -> { DataModel dataModel = recList.get(i); System.out.println("NAME " + dataModel.getName()); });

    opened by beraybentesen 6
  • Could you explain how you had achieved background shadowing effect?

    Could you explain how you had achieved background shadowing effect?

    I'm really new to android and almost made this library to work, the problem is, i had not achieved the shadowing effect, and don't know how to do it. I tried everything, even string-by-streang examined your sample, but i had not found any solution. voice 1 opekn_ervxq 1

    opened by WINTEX 5
  • Problem error when render preview !

    Problem error when render preview !

    I'm use theme

    <style name="ShortStoryTheme" parent="AppBaseTheme">
            <item name="android:textColorPrimary">@android:color/white</item>
            <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
            <item name="android:windowTranslucentStatus" tools:targetApi="19">true</item>
            <item name="android:windowContentOverlay">@null</item>
            <item name="windowActionBar">false</item>
            <!-- Toolbar Theme / Apply white arrow -->
            <item name="colorControlNormal">@android:color/white</item>
            <item name="actionBarTheme">@style/ShortStory_AppTheme.ActionBarTheme</item>
            <item name="android:windowActionBarOverlay" tools:targetApi="21">true</item>
            <item name="android:background">@android:color/transparent</item>
            <item name="windowNoTitle">true</item>
    
            <item name="android:windowBackground">@color/theme_background</item>
            <item name="actionMenuTextColor">@color/theme_icons</item>
            <item name="android:textColorSecondary">@color/theme_icons</item>
    
            <!-- Material Theme -->
            <item name="colorPrimary">@color/nliveo_red_colorPrimary</item>
            <item name="colorPrimaryDark">@color/nliveo_red_colorPrimaryDark</item>
            <item name="colorAccent">@color/nliveo_green_colorAccent</item>
            <item name="android:statusBarColor" tools:targetApi="21">@color/statusBarColor</item>
            <item name="android:navigationBarColor" tools:targetApi="21">@color/navigationBarColor
            </item>
            <item name="android:windowDrawsSystemBarBackgrounds" tools:targetApi="21">true</item>
        </style>
    

    And occur error when preview.

    java.lang.NullPointerException
        at com.miguelcatalan.materialsearchview.MaterialSearchView.setBackground(MaterialSearchView.java:297)
        at android.view.View.<init>(View.java:4328)
        at android.view.ViewGroup.<init>(ViewGroup.java:573)
        at android.widget.FrameLayout.<init>(FrameLayout.java:97)
        at android.widget.FrameLayout.<init>(FrameLayout.java:92)
        at android.widget.FrameLayout.<init>(FrameLayout.java:88)
        at com.miguelcatalan.materialsearchview.MaterialSearchView.<init>(MaterialSearchView.java:87)
        at com.miguelcatalan.materialsearchview.MaterialSearchView.<init>(MaterialSearchView.java:83)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
        at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:458)
        at org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:170)
        at org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:103)
        at com.android.tools.idea.rendering.LayoutlibCallbackImpl.loadView(LayoutlibCallbackImpl.java:190)
        at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:218)
        at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:145)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
        at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:835)
        at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:811)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
        at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:838)
        at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:811)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:394)
        at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:223)
        at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:426)
        at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:350)
        at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:510)
        at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:498)
        at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:888)
        at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:498)
        at com.android.tools.idea.rendering.RenderTask.access$600(RenderTask.java:72)
        at com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:610)
        at com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:607)
        at com.android.tools.idea.rendering.RenderService.runRenderAction(RenderService.java:366)
        at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:607)
        at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:629)
        at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.doRender(AndroidLayoutPreviewToolWindowManager.java:652)
        at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.access$1700(AndroidLayoutPreviewToolWindowManager.java:80)
        at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager$7$1.run(AndroidLayoutPreviewToolWindowManager.java:594)
        at com.intellij.openapi.progress.impl.CoreProgressManager$2.run(CoreProgressManager.java:152)
        at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:452)
        at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:402)
        at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:54)
        at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:137)
        at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager$7.run(AndroidLayoutPreviewToolWindowManager.java:589)
        at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320)
        at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:310)
        at com.intellij.util.ui.update.MergingUpdateQueue$2.run(MergingUpdateQueue.java:254)
        at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269)
        at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227)
        at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217)
        at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
        at com.intellij.util.Alarm$Request$1.run(Alarm.java:351)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
    
    opened by Noobknight 5
  • searchview inside Fragment is null

    searchview inside Fragment is null

    i am using your library but i use fragments. So i do not inflate main menu in activity but inside fragment. How to obtain reference to searchview ?

    i tried searchView = (MaterialSearchView)findViewById(R.id.search_view); but it returns null

    opened by AngleV 5
  • Maven repo

    Maven repo

    Hi, Are there any plans to migrate 1.4.0 to Maven? Have I missed a discussion somewhere? I cannot release an app that uses the cute Material SearchView because google won't accept libraries on jcenter() any longer.

    Is there a simple fix for this?

    opened by guyferguson 4
  • Bug

    Bug

    FATAL EXCEPTION: main Process: rk.android.app.shortcutmaker, PID: 23150 java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CREATE_SHORTCUT cmp=org.kustom.wallpaper/org.kustom.lib.editor.ShortcutActivity } from ProcessRecord{86816e2 23150:rk.android.app.shortcutmaker/u0a3573} (pid=23150, uid=13573) not exported from uid 13774 at android.os.Parcel.createExceptionOrNull(Parcel.java:2437) at android.os.Parcel.createException(Parcel.java:2421) at android.os.Parcel.readException(Parcel.java:2404) at android.os.Parcel.readException(Parcel.java:2346) at android.app.IActivityTaskManager$Stub$Proxy.startActivity(IActivityTaskManager.java:2897) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1743) at android.app.Activity.startActivityForResult(Activity.java:5473) at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:597) at androidx.core.app.ActivityCompat.startActivityForResult(ActivityCompat.java:237) at androidx.activity.ComponentActivity$2.onLaunch(ComponentActivity.java:210) at androidx.activity.result.ActivityResultRegistry$2.launch(ActivityResultRegistry.java:167) at androidx.activity.result.ActivityResultLauncher.launch(ActivityResultLauncher.java:47) at rk.android.app.shortcutmaker.activities.features.inner.CustomShortcutActivity.lambda$onActivityCreate$1$CustomShortcutActivity(CustomShortcutActivity.java:50) at rk.android.app.shortcutmaker.activities.features.inner.-$$Lambda$CustomShortcutActivity$Qv99c1MgYFvMl7WIaAbwav9yIUg.onItemClick(Unknown Source:2) at rk.android.app.shortcutmaker.activities.features.inner.adapter.CustomAdapter.lambda$onCreateViewHolder$0$CustomAdapter(CustomAdapter.java:67) at rk.android.app.shortcutmaker.activities.features.inner.adapter.-$$Lambda$CustomAdapter$yNjr3gmAgxDgS8b3MtDY5afXeRA.onClick(Unknown Source:4) at android.view.View.performClick(View.java:7792) at android.view.View.performClickInternal(View.java:7769) at android.view.View.access$3800(View.java:910) at android.view.View$PerformClick.run(View.java:30218) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:226) at android.os.Looper.loop(Looper.java:313) at android.app.ActivityThread.main(ActivityThread.java:8663) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135) Caused by: android.os.RemoteException: Remote stack trace: at com.android.server.wm.ActivityTaskSupervisor.checkStartAnyActivityPermission(ActivityTaskSupervisor.java:1334) at com.android.server.wm.ActivityStarter.executeRequest(ActivityStarter.java:1260) at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:891) at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1873) at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1744)

    opened by rajarshikhatua100 0
  • Distinction of accents in searches

    Distinction of accents in searches

    Hi, I have an agenda with a contact named José and another Jose Luis. I would like to know if there is any way that the bookstore does not distinguish accents, because currently if I search for Jose, I will obtain just the contact Jose Luis. The expected behavior is that José also appears to us.

    All the best.

    opened by alvaromanja1 1
  • Crash android.content.res.Resources$NotFoundException: Unable to find resource ID #0x7f0800d4

    Crash android.content.res.Resources$NotFoundException: Unable to find resource ID #0x7f0800d4

    Hi. We use this library 1.4.0. And it works fine for most of our users. Thanks. But there are a few users that randomly but very frequently get this crash.

    android.content.res.Resources$NotFoundException: Unable to find resource ID #0x7f0800d4
    	at android.content.res.ResourcesImpl.getResourceName()(ResourcesImpl.java:253)
    	at android.content.res.ResourcesImpl.loadDrawableForCookie()(ResourcesImpl.java:760)
    	at android.content.res.ResourcesImpl.loadDrawable()(ResourcesImpl.java:630)
    	at android.content.res.Resources.loadDrawable()(Resources.java:886)
    	at android.content.res.TypedArray.getDrawableForDensity()(TypedArray.java:953)
    	at android.content.res.TypedArray.getDrawable()(TypedArray.java:928)
    	at android.content.res.XResources$XTypedArray.getDrawable()(XResources.java:1363)
    	at android.widget.ImageView.<init>()(ImageView.java:188)
    	at android.widget.ImageButton.<init>()(ImageButton.java:86)
    	at android.widget.ImageButton.<init>()(ImageButton.java:82)
    	at androidx.appcompat.widget.AppCompatImageButton.<init>()(AppCompatImageButton.java:3)
    	at androidx.appcompat.widget.AppCompatImageButton.<init>()(AppCompatImageButton.java:2)
    	at androidx.appcompat.app.AppCompatViewInflater.createImageButton()(AppCompatViewInflater.java:1)
    	at androidx.appcompat.app.AppCompatViewInflater.createView()(AppCompatViewInflater.java:24)
    	at androidx.appcompat.app.AppCompatDelegateImpl.createView()(AppCompatDelegateImpl.java:17)
    	at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView()(AppCompatDelegateImpl.java:1)
    	at android.view.LayoutInflater.createViewFromTag()(LayoutInflater.java:772)
    	at android.view.LayoutInflater.createViewFromTag()(LayoutInflater.java:730)
    	at android.view.LayoutInflater.rInflate()(LayoutInflater.java:863)
    	at android.view.LayoutInflater.rInflateChildren()(LayoutInflater.java:824)
    	at android.view.LayoutInflater.rInflate()(LayoutInflater.java:866)
    	at android.view.LayoutInflater.rInflateChildren()(LayoutInflater.java:824)
    	at android.view.LayoutInflater.rInflate()(LayoutInflater.java:866)
    	at android.view.LayoutInflater.rInflateChildren()(LayoutInflater.java:824)
    	at android.view.LayoutInflater.inflate()(LayoutInflater.java:515)
    	at android.view.LayoutInflater.inflate()(LayoutInflater.java:423)
    	at com.miguelcatalan.materialsearchview.MaterialSearchView.r()(MaterialSearchView.java:1)
    	at com.miguelcatalan.materialsearchview.MaterialSearchView.<init>()(MaterialSearchView.java:8)
    	at com.freshbooks.andromeda.view.AndromedaSearchView.<init>()(AndromedaSearchView.java:2)
    	at com.freshbooks.andromeda.view.AndromedaSearchView.<init>()(AndromedaSearchView.java:1)
    	at java.lang.reflect.Constructor.newInstance0()(Constructor.java:-2)
    	at java.lang.reflect.Constructor.newInstance()(Constructor.java:334)
    	at android.view.LayoutInflater.createView()(LayoutInflater.java:647)
    	at android.view.LayoutInflater.createViewFromTag()(LayoutInflater.java:790)
    	at android.view.LayoutInflater.createViewFromTag()(LayoutInflater.java:730)
    	at android.view.LayoutInflater.rInflate()(LayoutInflater.java:863)
    	at android.view.LayoutInflater.rInflateChildren()(LayoutInflater.java:824)
    	at android.view.LayoutInflater.rInflate()(LayoutInflater.java:866)
    	at android.view.LayoutInflater.rInflateChildren()(LayoutInflater.java:824)
    	at android.view.LayoutInflater.rInflate()(LayoutInflater.java:866)
    	at android.view.LayoutInflater.rInflateChildren()(LayoutInflater.java:824)
    	at android.view.LayoutInflater.rInflate()(LayoutInflater.java:866)
    	at android.view.LayoutInflater.rInflateChildren()(LayoutInflater.java:824)
    	at android.view.LayoutInflater.inflate()(LayoutInflater.java:515)
    	at android.view.LayoutInflater.inflate()(LayoutInflater.java:423)
    	at android.view.LayoutInflater.inflate()(LayoutInflater.java:374)
    	at androidx.appcompat.app.AppCompatDelegateImpl.setContentView()(AppCompatDelegateImpl.java:9)
    	at androidx.appcompat.app.AppCompatActivity.setContentView()(AppCompatActivity.java:1)
    	at com.freshbooks.andromeda.ui.common.ToolbarActivity.onCreate()(ToolbarActivity.kt:3)
    	at com.freshbooks.andromeda.ui.invoice.edit.InvoiceCreateActivity.onCreate()(InvoiceCreateActivity.kt:1)
    	at android.app.Activity.performCreate()(Activity.java:7009)
    	at android.app.Activity.performCreate()(Activity.java:7000)
    	at android.app.Instrumentation.callActivityOnCreate()(Instrumentation.java:1214)
    	at android.app.ActivityThread.performLaunchActivity()(ActivityThread.java:2731)
    	at android.app.ActivityThread.handleLaunchActivity()(ActivityThread.java:2856)
    	at android.app.ActivityThread.-wrap11()(undefined:0)
    	at android.app.ActivityThread$H.handleMessage()(ActivityThread.java:1589)
    	at android.os.Handler.dispatchMessage()(Handler.java:106)
    	at android.os.Looper.loop()(Looper.java:164)
    	at android.app.ActivityThread.main()(ActivityThread.java:6494)
    	at java.lang.reflect.Method.invoke()(Method.java:-2)
    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run()(RuntimeInit.java:438)
    	at com.android.internal.os.ZygoteInit.main()(ZygoteInit.java:807)
    
    thread 249 - Crashlytics Exception Handler1:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.park()(LockSupport.java:190)
    java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await()(AbstractQueuedSynchronizer.java:2059)
    java.util.concurrent.LinkedBlockingQueue.take()(LinkedBlockingQueue.java:442)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1087)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    com.google.firebase.crashlytics.internal.common.ExecutorUtils$1$1.onRun()(ExecutorUtils.java:1)
    com.google.firebase.crashlytics.internal.common.BackgroundPriorityRunnable.run()(BackgroundPriorityRunnable.java:2)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 265 - pool-15-thread-1:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.parkNanos()(LockSupport.java:230)
    java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill()(SynchronousQueue.java:461)
    java.util.concurrent.SynchronousQueue$TransferStack.transfer()(SynchronousQueue.java:362)
    java.util.concurrent.SynchronousQueue.poll()(SynchronousQueue.java:937)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1086)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 264 - pool-17-thread-1:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.parkNanos()(LockSupport.java:230)
    java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill()(SynchronousQueue.java:461)
    java.util.concurrent.SynchronousQueue$TransferStack.transfer()(SynchronousQueue.java:362)
    java.util.concurrent.SynchronousQueue.poll()(SynchronousQueue.java:937)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1086)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 311 - pool-20-thread-1:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.park()(LockSupport.java:190)
    java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await()(AbstractQueuedSynchronizer.java:2059)
    java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take()(ScheduledThreadPoolExecutor.java:1120)
    java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take()(ScheduledThreadPoolExecutor.java:1113)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1087)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 291 - NR_NR-PayloadWorker-1:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.parkNanos()(LockSupport.java:230)
    java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos()(AbstractQueuedSynchronizer.java:2101)
    java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take()(ScheduledThreadPoolExecutor.java:1132)
    java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take()(ScheduledThreadPoolExecutor.java:1113)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1087)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 257 - awaitEvenIfOnMainThread task continuation executor1:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.park()(LockSupport.java:190)
    java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await()(AbstractQueuedSynchronizer.java:2059)
    java.util.concurrent.LinkedBlockingQueue.take()(LinkedBlockingQueue.java:442)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1087)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    com.google.firebase.crashlytics.internal.common.ExecutorUtils$1$1.onRun()(ExecutorUtils.java:1)
    com.google.firebase.crashlytics.internal.common.BackgroundPriorityRunnable.run()(BackgroundPriorityRunnable.java:2)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 306 - Okio Watchdog:
    java.lang.Object.wait()(Object.java:-2)
    com.android.okhttp.okio.AsyncTimeout.awaitTimeout()(AsyncTimeout.java:311)
    com.android.okhttp.okio.AsyncTimeout.-wrap0()(undefined:0)
    com.android.okhttp.okio.AsyncTimeout$Watchdog.run()(AsyncTimeout.java:286)
    
    thread 310 - NR_Sampler-1:
    android.os.BinderProxy.transactNative()(Binder.java:-2)
    android.os.BinderProxy.transact()(Binder.java:764)
    android.app.IActivityManager$Stub$Proxy.getProcessMemoryInfo()(IActivityManager.java:6233)
    android.app.ActivityManager.getProcessMemoryInfo()(ActivityManager.java:3707)
    com.newrelic.agent.android.sample.Sampler.sampleMemory()(Sampler.java:3)
    com.newrelic.agent.android.sample.Sampler.sampleMemory()(Sampler.java:2)
    com.newrelic.agent.android.sample.Sampler.sample()(Sampler.java:4)
    com.newrelic.agent.android.sample.Sampler.run()(Sampler.java:2)
    java.util.concurrent.Executors$RunnableAdapter.call()(Executors.java:457)
    java.util.concurrent.FutureTask.runAndReset()(FutureTask.java:307)
    java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run()(ScheduledThreadPoolExecutor.java:302)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1162)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 290 - NR_TaskQueue-1:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.parkNanos()(LockSupport.java:230)
    java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos()(AbstractQueuedSynchronizer.java:2101)
    java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take()(ScheduledThreadPoolExecutor.java:1132)
    java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take()(ScheduledThreadPoolExecutor.java:1113)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1087)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 294 - NR_NR-PayloadWorker-3:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.park()(LockSupport.java:190)
    java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await()(AbstractQueuedSynchronizer.java:2059)
    java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take()(ScheduledThreadPoolExecutor.java:1127)
    java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take()(ScheduledThreadPoolExecutor.java:1113)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1087)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 255 - Measurement Worker:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Object.wait()(Object.java:422)
    com.google.android.gms.measurement.internal.k4.run()(com.google.android.gms:play-services-measurement-impl@@18.0.2:10)
    
    thread 242 - ScionFrontendApi:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.parkNanos()(LockSupport.java:230)
    java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos()(AbstractQueuedSynchronizer.java:2101)
    java.util.concurrent.LinkedBlockingQueue.poll()(LinkedBlockingQueue.java:467)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1086)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 292 - NR_NR-PayloadWorker-2:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.park()(LockSupport.java:190)
    java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await()(AbstractQueuedSynchronizer.java:2059)
    java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take()(ScheduledThreadPoolExecutor.java:1127)
    java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take()(ScheduledThreadPoolExecutor.java:1113)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1087)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 301 - pool-30-thread-1:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.park()(LockSupport.java:190)
    java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await()(AbstractQueuedSynchronizer.java:2059)
    java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take()(ScheduledThreadPoolExecutor.java:1120)
    java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take()(ScheduledThreadPoolExecutor.java:1113)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1087)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 260 - firebase-installations-executor-1:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.parkNanos()(LockSupport.java:230)
    java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos()(AbstractQueuedSynchronizer.java:2101)
    java.util.concurrent.LinkedBlockingQueue.poll()(LinkedBlockingQueue.java:467)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1086)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 243 - pool-7-thread-1:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.parkNanos()(LockSupport.java:230)
    java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill()(SynchronousQueue.java:461)
    java.util.concurrent.SynchronousQueue$TransferStack.transfer()(SynchronousQueue.java:362)
    java.util.concurrent.SynchronousQueue.poll()(SynchronousQueue.java:937)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1086)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 233 - FinalizerWatchdogDaemon:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Daemons$FinalizerWatchdogDaemon.sleepUntilNeeded()(Daemons.java:297)
    java.lang.Daemons$FinalizerWatchdogDaemon.runInternal()(Daemons.java:277)
    java.lang.Daemons$Daemon.run()(Daemons.java:103)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 261 - firebase-installations-executor-2:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.parkNanos()(LockSupport.java:230)
    java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos()(AbstractQueuedSynchronizer.java:2101)
    java.util.concurrent.LinkedBlockingQueue.poll()(LinkedBlockingQueue.java:467)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1086)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 293 - NR_Harvester-1:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.parkNanos()(LockSupport.java:230)
    java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos()(AbstractQueuedSynchronizer.java:2101)
    java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take()(ScheduledThreadPoolExecutor.java:1132)
    java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take()(ScheduledThreadPoolExecutor.java:1113)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1087)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 273 - pool-19-thread-2:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.park()(LockSupport.java:190)
    java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await()(AbstractQueuedSynchronizer.java:2059)
    java.util.concurrent.LinkedBlockingQueue.take()(LinkedBlockingQueue.java:442)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1087)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 234 - HeapTaskDaemon:
    
    thread 266 - pool-19-thread-1:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.park()(LockSupport.java:190)
    java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await()(AbstractQueuedSynchronizer.java:2059)
    java.util.concurrent.LinkedBlockingQueue.take()(LinkedBlockingQueue.java:442)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1087)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 253 - pool-10-thread-1:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.parkNanos()(LockSupport.java:230)
    java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill()(SynchronousQueue.java:461)
    java.util.concurrent.SynchronousQueue$TransferStack.transfer()(SynchronousQueue.java:362)
    java.util.concurrent.SynchronousQueue.poll()(SynchronousQueue.java:937)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1086)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 281 - pool-10-thread-2:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.parkNanos()(LockSupport.java:230)
    java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill()(SynchronousQueue.java:461)
    java.util.concurrent.SynchronousQueue$TransferStack.transfer()(SynchronousQueue.java:362)
    java.util.concurrent.SynchronousQueue.poll()(SynchronousQueue.java:937)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1086)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 231 - ReferenceQueueDaemon:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Daemons$ReferenceQueueDaemon.runInternal()(Daemons.java:178)
    java.lang.Daemons$Daemon.run()(Daemons.java:103)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 246 - queued-work-looper:
    android.os.MessageQueue.nativePollOnce()(MessageQueue.java:-2)
    android.os.MessageQueue.next()(MessageQueue.java:325)
    android.os.Looper.loop()(Looper.java:142)
    android.os.HandlerThread.run()(HandlerThread.java:65)
    
    thread 275 - Adjust-pool-21-thread-1-ActivityHandler:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.parkNanos()(LockSupport.java:230)
    java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill()(SynchronousQueue.java:461)
    java.util.concurrent.SynchronousQueue$TransferStack.transfer()(SynchronousQueue.java:362)
    java.util.concurrent.SynchronousQueue.poll()(SynchronousQueue.java:937)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1086)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 300 - pool-29-thread-1:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.parkNanos()(LockSupport.java:230)
    java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos()(AbstractQueuedSynchronizer.java:2101)
    java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take()(ScheduledThreadPoolExecutor.java:1132)
    java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take()(ScheduledThreadPoolExecutor.java:1113)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1087)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 254 - pool-8-thread-1:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.parkNanos()(LockSupport.java:230)
    java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill()(SynchronousQueue.java:461)
    java.util.concurrent.SynchronousQueue$TransferStack.transfer()(SynchronousQueue.java:362)
    java.util.concurrent.SynchronousQueue.poll()(SynchronousQueue.java:937)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1086)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 232 - FinalizerDaemon:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Object.wait()(Object.java:422)
    java.lang.ref.ReferenceQueue.remove()(ReferenceQueue.java:188)
    java.lang.ref.ReferenceQueue.remove()(ReferenceQueue.java:209)
    java.lang.Daemons$FinalizerDaemon.runInternal()(Daemons.java:232)
    java.lang.Daemons$Daemon.run()(Daemons.java:103)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 252 - pool-9-thread-1:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.parkNanos()(LockSupport.java:230)
    java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill()(SynchronousQueue.java:461)
    java.util.concurrent.SynchronousQueue$TransferStack.transfer()(SynchronousQueue.java:362)
    java.util.concurrent.SynchronousQueue.poll()(SynchronousQueue.java:937)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1086)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 258 - com.google.firebase.crashlytics.startup1:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.park()(LockSupport.java:190)
    java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await()(AbstractQueuedSynchronizer.java:2059)
    java.util.concurrent.LinkedBlockingQueue.take()(LinkedBlockingQueue.java:442)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1087)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    com.google.firebase.crashlytics.internal.common.ExecutorUtils$1$1.onRun()(ExecutorUtils.java:1)
    com.google.firebase.crashlytics.internal.common.BackgroundPriorityRunnable.run()(BackgroundPriorityRunnable.java:2)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 284 - OkHttp ConnectionPool:
    java.lang.Object.wait()(Object.java:-2)
    com.android.okhttp.ConnectionPool$1.run()(ConnectionPool.java:101)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1162)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 295 - Adjust-pool-28-thread-1-PackageHandler:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.parkNanos()(LockSupport.java:230)
    java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill()(SynchronousQueue.java:461)
    java.util.concurrent.SynchronousQueue$TransferStack.transfer()(SynchronousQueue.java:362)
    java.util.concurrent.SynchronousQueue.poll()(SynchronousQueue.java:937)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1086)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 263 - pool-16-thread-1:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.parkNanos()(LockSupport.java:230)
    java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill()(SynchronousQueue.java:461)
    java.util.concurrent.SynchronousQueue$TransferStack.transfer()(SynchronousQueue.java:362)
    java.util.concurrent.SynchronousQueue.poll()(SynchronousQueue.java:937)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1086)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 309 - NR_MeasurementEngine-1:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.parkNanos()(LockSupport.java:230)
    java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill()(SynchronousQueue.java:461)
    java.util.concurrent.SynchronousQueue$TransferStack.transfer()(SynchronousQueue.java:362)
    java.util.concurrent.SynchronousQueue.poll()(SynchronousQueue.java:937)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1086)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    thread 256 - pool-12-thread-1:
    java.lang.Object.wait()(Object.java:-2)
    java.lang.Thread.parkFor$()(Thread.java:2137)
    sun.misc.Unsafe.park()(Unsafe.java:358)
    java.util.concurrent.locks.LockSupport.park()(LockSupport.java:190)
    java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await()(AbstractQueuedSynchronizer.java:2059)
    java.util.concurrent.LinkedBlockingQueue.take()(LinkedBlockingQueue.java:442)
    java.util.concurrent.ThreadPoolExecutor.getTask()(ThreadPoolExecutor.java:1087)
    java.util.concurrent.ThreadPoolExecutor.runWorker()(ThreadPoolExecutor.java:1147)
    java.util.concurrent.ThreadPoolExecutor$Worker.run()(ThreadPoolExecutor.java:636)
    java.lang.Thread.run()(Thread.java:764)
    
    opened by UdjinNNN 1
  • App crashing sometimes, findViewById(R.id.search_layout) returning null

    App crashing sometimes, findViewById(R.id.search_layout) returning null

    In MaterialSearchView there is a method initiateView in which the following statement: mSearchLayout = findViewById(R.id.search_layout); returning null sometime that is why the subsequent statement : mSearchTopBar = (RelativeLayout) mSearchLayout.findViewById(R.id.search_top_bar); throwing an exception.

    Here is the log from firebase crashlytics:

    Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
           at com.miguelcatalan.materialsearchview.MaterialSearchView.initiateView(MaterialSearchView.java:146)
           at com.miguelcatalan.materialsearchview.MaterialSearchView.<init>(MaterialSearchView.java:93)
           at com.miguelcatalan.materialsearchview.MaterialSearchView.<init>(MaterialSearchView.java:85)
           at java.lang.reflect.Constructor.newInstance0(Constructor.java)
           at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
           at android.view.LayoutInflater.createView(LayoutInflater.java:652)
           at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:812)
           at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:752)
           at android.view.LayoutInflater.rInflate(LayoutInflater.java:883)
           at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:846)
           at android.view.LayoutInflater.rInflate(LayoutInflater.java:886)
           at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:846)
           at android.view.LayoutInflater.rInflate(LayoutInflater.java:886)
           at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:846)
           at android.view.LayoutInflater.rInflate(LayoutInflater.java:886)
           at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:846)
           at android.view.LayoutInflater.rInflate(LayoutInflater.java:886)
           at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:846)
           at android.view.LayoutInflater.rInflate(LayoutInflater.java:886)
           at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:846)
           at android.view.LayoutInflater.inflate(LayoutInflater.java:522)
           at android.view.LayoutInflater.inflate(LayoutInflater.java:430)
           at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
           at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:696)
           at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:170)
           at com.orderaxe.ajm.ui.home.HomeActivity.onCreate(HomeActivity.kt:97)
           at android.app.Activity.performCreate(Activity.java:6868)
           at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
           at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2676)
           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2784)
           at android.app.ActivityThread.-wrap12(ActivityThread.java)
           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1523)
           at android.os.Handler.dispatchMessage(Handler.java:102)
           at android.os.Looper.loop(Looper.java:163)
           at android.app.ActivityThread.main(ActivityThread.java:6238)
           at java.lang.reflect.Method.invoke(Method.java)
           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:933)
           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
    
    
    opened by suraj-vaish9av 0
  • Issue while using MaterialSearchView inside a Fragment Activity

    Issue while using MaterialSearchView inside a Fragment Activity

    I am using a navigation drawer and I want to provide search functionality in one of my fragment. But, when I use MaterialSearchView inside fragment, everything works fine except for the layout part. The Search bar on expanding appears below the toolbar and has two back arrows to collapse it and both has to be pressed.

    1. On launching the activity: image

    2. On clicking on Search icon: image

    3. On clicking back button on the left of the search box: image

    Below is the code of my fragment's xml file,

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        tools:context="com.mypackagename.FirstFragment">
        <FrameLayout
            android:id="@+id/frameLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/toolbar_container">
            <ExpandableListView
                android:id="@+id/elv_list"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />
        </FrameLayout>
        <FrameLayout
            android:id="@+id/toolbar_container"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <androidx.appcompat.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="?attr/colorPrimary"/>
    
            <com.miguelcatalan.materialsearchview.MaterialSearchView
                android:id="@+id/search_view"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>
        </FrameLayout>
    </RelativeLayout>
    
    opened by nikhiltari25 0
Releases(vv1.3.1)
Owner
Miguel Catalan Bañuls
Tech Lead at @smart-protection, previously at @cabify & @99markets, former @ADGevents organizer.
Miguel Catalan Bañuls
Material Design text field that comes in a box, based on (OLD) Google Material Design guidelines.

TextFieldBoxes A new Material Design text field that comes in a box, based on Google Material Design guidelines. ???? 中文看这里 UPDATE NOTICE 1.4.5 Releas

Mark Wang 769 Jan 7, 2023
🪐 Jetpack Compose animation library that allows you to implement animations such as shared element transition.

Orbitary ?? Jetpack Compose animation library that allows you to implement animations such as shared element transition. Download Gradle Add the depen

Jaewoong Eum 503 Dec 30, 2022
🪐 Jetpack Compose animation library that allows you to implement animations such as shared element transition.

?? Jetpack Compose animation library that allows you to implement animations such as shared element transition.

Jaewoong Eum 504 Jan 2, 2023
Implementation of Ripple effect from Material Design for Android API 9+

RippleEffect ExpandableLayout provides an easy way to create a view called header with an expandable view. Both view are external layout to allow a ma

Robin Chutaux 4.9k Dec 30, 2022
:sparkles: An easy way to implement an elastic touch effect for Android.

ElasticViews ✨ An easy way to implement an elastic touch effect for Android. Including in your project Gradle Add below codes to your root build.gradl

Jaewoong Eum 763 Dec 29, 2022
Simple tool which help you to implement activity and fragment transition for pre-Lollipop devices.

PreLollipopTransition Simple tool which help you to implement activity and fragment transition for pre-Lollipop devices. Download In your app build.gr

Takahiro Menju 1.3k Nov 28, 2022
Android library for material scrolling techniques.

material-scrolling Android library for material scrolling techniques. Features Easily implement material scrolling techniques with RecyclerView. Custo

Satoru Fujiwara 601 Nov 29, 2022
💠Metaphor is the library to easily add Material Motion animations

Metaphor Metaphor is the library to easily add Material Motion animations. Who's using Metaphor? ?? Check out who's using Metaphor Include in your pro

Ranbir Singh 132 Dec 25, 2022
A Simple Todo app design in Flutter to keep track of your task on daily basis. Its build on BLoC Pattern. You can add a project, labels, and due-date to your task also you can sort your task on the basis of project, label, and dates

WhatTodo Life can feel overwhelming. But it doesn’t have to. A Simple To-do app design in flutter to keep track of your task on daily basis. You can a

Burhanuddin Rashid 1k Jan 1, 2023
Material image loading implementation

MaterialImageLoading Material image loading implementation Sample And have a look on a sample Youtube Video : Youtube Link [] (https://www.youtube.com

Florent CHAMPIGNY 392 Nov 17, 2022
Animate a strike over any image to indicate on/off states. As seen in the Material Guidelines.

StrikedImageView Animate a strike over any image to indicate on/off states. As seen in the Material Guidelines. Gradle allprojects { repositories

null 9 Sep 21, 2022
Sophisticated and cool intro with Material Motion Animation

☯️Sophisticated and cool intro with Material Motion Animations(No more viewpager transformer)

Ranbir Singh 34 Sep 8, 2022
☯️Sophisticated and cool intro with Material Motion Animations(No more viewpager transformer or Memory leak)

Material Intro Sophisticated and cool intro with Material Motion Animations. Who's using Material Intro? ?? Check out who's using Material Intro Inclu

Ranbir Singh 34 Sep 8, 2022
Add Animatable Material Components in Android Jetpack Compose. Create jetpack compose animations painless.

AnimatableCompose Add Animatable Material Components in Android Jetpack Compose. Create jetpack compose animation painless. What you can create from M

Emir Demirli 12 Jan 2, 2023
Android StackBlur is a library that can perform a blurry effect on a Bitmap based on a gradient or radius, and return the result. The library is based on the code of Mario Klingemann.

Android StackBlur Android StackBlur is a library that can perform a blurry effect on a Bitmap based on a gradient or radius, and return the result. Th

Enrique López Mañas 3.6k Dec 29, 2022
Postman is a reactive One-tap SMS verification library. This library allows the usage of RxJava with The SMS User Consent API

What is Postman? Postman is a reactive One-tap SMS verification library. This library allows the usage of RxJava with The SMS User Consent API Usage P

Cafer Mert Ceyhan 129 Dec 24, 2022
A Java library that models spring dynamics and adds real world physics to your app.

Rebound About Rebound is a java library that models spring dynamics. Rebound spring models can be used to create animations that feel natural by intro

Facebook Archive 5.5k Jan 9, 2023
Android library for swipable gestures

Swipper Android Library for custom views to control brightness , volume and seek through swipable gestures . These views could easily replace the conv

Mobile Development Group 105 Dec 30, 2022
Android Library that lights items for tutorials or walk-throughs etc...

Spotlight Gradle dependencies { implementation 'com.github.takusemba:spotlight:x.x.x' } Usage val spotlight = Spotlight.Builder(this) .setTarg

TakuSemba 3.4k Jan 4, 2023