更改支持SearchView主题

时间:2014-07-14 22:28:19

标签: android android-widget android-support-library android-styles searchview

在我的应用程序中,由于兼容性,我有一个使用support.v7库的SearchView。

问题是,在具有API 11或更高版本的设备中,当我打开searchview时,我得到了支持api样式,并且只有在我搜索样式更改为我的应用程序样式之后。

我希望最新API中的主题总是像第二张图片一样。已经尝试过其他主题,但结果总是一样的。

搜索结果展开时的样式:image link

搜索后的样式:image link

options_menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:malfriends="http://schemas.android.com/apk/res-auto" >

<item
    android:id="@+id/search"
    android:icon="@drawable/ic_action_search"
    android:title="@string/search_title"
    malfriends:actionViewClass="android.support.v7.widget.SearchView"
    malfriends:showAsAction="collapseActionView|ifRoom"/>
<item
    android:id="@+id/logoff"
    android:title="@string/logout"
    malfriends:showAsAction="never"/>

</menu>

searchable.xml

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:hint="@string/search_hint"
android:label="@string/app_name" android:searchSuggestAuthority=
"com.dandrex.malfriends.controller.provider.SearchFriendsProvider"
android:searchSuggestSelection=" ?" />

我的活动课

import android.support.v7.widget.SearchView;

...

public class FeedTabActivity extends ActionBarActivity implements
    ActionBar.TabListener

onCreateOptionsMenu

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.options_menu, menu);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        searchView = (SearchView) menu.findItem(R.id.search)
                .getActionView();
        searchView.setSearchableInfo(searchManager
                .getSearchableInfo(new ComponentName(
                        FeedTabActivity.this, FeedTabActivity.class)));
        searchView.setIconifiedByDefault(false);
    } else {
        MenuItem itemCompat = menu.findItem(R.id.search);
        searchView = (SearchView) MenuItemCompat.getActionView(itemCompat);
    }
    return true;
}

0 个答案:

没有答案