Reputation: 24325
For some reason my searchview has a white background instead of transparent and I cant seem to get rid of it. I am using AppCompat theme. I am using a ToolBar
manually as my ActionBar
.
menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/search"
android:title="Search"
android:icon="@android:drawable/ic_menu_search"
app:showAsAction="collapseActionView|ifRoom"
app:actionViewClass="com.exposure.controls.ExposureSearchView" />
</menu>
<style name="LaunchTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:colorBackground">@color/app_background</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:background">@android:color/transparent</item>
<item name="windowActionBarOverlay">true</item>
<item name="android:windowActionBarOverlay">true</item>
<item name="android:windowFullscreen">true</item>
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="searchViewStyle">@style/MySearchViewStyle</item>
</style>
<style name="MySearchViewStyle" parent="Widget.AppCompat.SearchView">
<item name="queryBackground">@android:color/transparent</item>
<item name="submitBackground">@android:color/transparent</item>
</style>
Upvotes: 8
Views: 4254
Reputation: 2644
SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.menu_search));
SearchManager searchManager = (SearchManager) getSystemService(Activity.SEARCH_SERVICE);
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
// Setting up custom search button icon
int searchImgId = android.support.v7.appcompat.R.id.search_button; // I used the explicit layout ID of searchview's ImageView
// Use Whatever icon you want over here in place of ic_search_black
ImageView v = (ImageView) searchView.findViewById(searchImgId);
v.setImageResource(R.drawable.ic_search_black);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
// Do operation
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});
Upvotes: 0
Reputation: 1904
Try this way
<style name="searchButtonStyle" parent="Widget.AppCompat.Light.ActionButton.Overflow">
<item name="android:background">@color/your_color</item>
<item name="background">@color/your_color</item>
</style>
Add this to your style like as
<style name="LaunchTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:actionOverflowButtonStyle">@style/searchButtonStyle</item>
<item name="actionOverflowButtonStyle">@style/searchButtonStyle</item>
</style>
Upvotes: 0
Reputation: 24325
I updated these backgrounds to transparent and it worked.
<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
<item name="android:background" tools:ignore="NewApi">@android:color/transparent</item>
<item name="background">@android:color/transparent</item>
Upvotes: 4
Reputation: 1748
I am not sure it will work or not, change <item name="android:background">@android:color/transparent</item>
to <item name="android:background">@color/app_background</item>
in your launch theme
Upvotes: 0