2015-04-24 45 views
8

我爲建議行定義了佈局,但在將AppCompat庫更新爲22.1之後,styles.xml中定義的佈局被忽略。使用AppCompat 22.1.0設計AppCompat SearchView不起作用

這是我styles.xml文件(簡體):

<style name="Theme.Upp" parent="@style/MyApp"> 
    <item name="searchViewStyle">@style/SearchViewStyleMyApp</item> 
</style> 

<style name="SearchViewStyleMyApp" parent="Widget.AppCompat.SearchView"> 
    <!-- Background for the search query section (e.g. EditText) --> 
    <!-- <item name="queryBackground">@android:color/black</item> --> 
    <!-- Background for the actions section (e.g. voice, submit) --> 
    <!-- <item name="submitBackground">...</item> --> 
    <!-- Close button icon --> 
    <!-- <item name="closeIcon">...</item> --> 
    <!-- Search button icon --> 
    <!-- <item name="searchIcon">...</item> --> 
    <!-- Go/commit button icon --> 
    <!-- <item name="goIcon">...</item> --> 
    <!-- Voice search button icon --> 
    <!-- <item name="voiceIcon">...</item> --> 
    <!-- Commit icon shown in the query suggestion row --> 
    <!-- <item name="commitIcon">...</item> --> 
    <!-- Layout for query suggestion rows --> 
    <item name="suggestionRowLayout">@layout/layout_suggestion_entry</item> 
</style> 

即使我試圖改變它不工作的queryBackground。

任何想法爲什麼?

回答

18

看着最新的圖書館來源,它喜歡它打算使SearchView匹配材料設計指導方針,因此結果默認樣式是沒有下劃線和提示圖標。

先申請自己的風格,你必須確定你的SearchView風格styles.xml這樣的:

<style name="SearchViewStyleMyApp" parent="Widget.AppCompat.SearchView"> 
    <!-- Background for the search query section (e.g. EditText) --> 
    <!-- <item name="queryBackground">@android:color/black</item> --> 
    ... 
    <!-- note that this is how you stye your hint icon --> 
    <item name="searchHintIcon">@drawable/ab_icon_search</item> 
</style> 

然後定義你的動作條/工具欄主題覆蓋:

<style name="MyThemeOverlay.ActionBar" parent="ThemeOverlay.AppCompat.Dark.ActionBar"> 
     <item name="searchViewStyle">@style/SearchViewStyleMyApp</item> 
</style> 

下一步是將ToolBar添加到您的佈局文件中,如下所示:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="?attr/colorPrimary" 
     android:minHeight="?attr/actionBarSize" 
     app:theme="@style/MyThemeOverlay.ActionBar" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
     android:elevation="4dp" /> 

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

</LinearLayout> 

Last st EP是設置工具欄像一個動作條:

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

    } 
} 

另外請注意,你的主題有如果你不使用Toolbar延長Theme.AppCompat.NoActionBar

+1

非常感謝!有用! –

+0

嗨,我做了與你所提到的一樣,但我的搜索樣式仍然被忽略。 有什麼想法? –

+0

@Mohammad Imran你必須擴展** Widget.AppCompat.SearchView **而不是** Widget.AppCompat.SearchView.ActionBar **。如果這沒有幫助,那麼其他地方會出現樣式錯誤。 – Tadas

11

,覆蓋風格actionBarThemesearchViewStyle

<style name="AppTheme" parent="Theme.AppCompat.Light"> 
    ... 
    <item name="actionBarTheme">@style/AppActionBarTheme</item> 
</style> 

<style name="AppActionBarTheme" parent="ThemeOverlay.AppCompat.ActionBar"> 
    <item name="searchViewStyle">@style/AppActionBarSearchView</item> 
</style> 

<style name="AppActionBarSearchView" parent="Widget.AppCompat.SearchView.ActionBar"> 
    <item name="queryBackground">@drawable/your_query_background</item> 
    <item name="submitBackground">@drawable/your_submit_background</item> 
    <item name="searchHintIcon">@drawable/your_search_hint_icon</item> 
    <item name="queryHint">your query hint</item> 
</style> 
+1

它不適用於appcompat 22.1.0。 –

+0

我可以確認這是否適用於appcompat 22.1.1 – tinsukE

相關問題