2015-04-24 12 views
8

Öneri satırı için bir düzen tanımladım, ancak AppCompat kütüphanesini 22.1'e güncelledikten sonra styles.xml dosyasında tanımlanan düzen dikkate alınmaz.Styling AppCompat SearchView with AppCompat 22.1.0 çalışmıyor

Bu (basitleştirilmiş) benim styles.xml dosyasıdır: Ben çalışmıyor queryBackground değiştirmeye çalıştığınızda bile

<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> 

.

Herhangi bir fikir neden?

cevap

18

En yeni kitaplık kaynağına baktıktan sonra, SearchView eşleşmesi malzeme tasarımı yönergelerini hazırlamayı amaçladığı için, varsayılan stilin altı çizili ve ipucu simgesi olmadığından emin olun.

Sonra
<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> 

tanımladığınız İşlem Çubuğu/Toolbar tema bindirme:

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

Sonraki adım

böyle styles.xml içinde SearchView stilini tanımlamak zorunda önce kendi stilini uygulamak için Bu gibi düzen dosyasına ToolBar eklemektir:

<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> 

Son st ep bir İşlem Çubuğu gibi davranmak Çubuğunuzu ayarlamaktır:

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); 

    } 
} 

Ayrıca tema Toolbar kullanmıyorsanız Theme.AppCompat.NoActionBar

+1

Çok teşekkürler! İşe yarıyor! –

+0

Merhaba, bahsettiğim gibi yaptım ama yine de Arama Tarzım göz ardı ediliyor. Herhangi bir fikrin var mı? –

+0

@Mohammad Imran ** Widget.AppCompat.SearchView ** ve ** Widget.AppCompat.SearchView.ActionBar ** 'ı genişletmeniz gerekiyor. Bu yardımcı olmazsa, başka bir yerde bir stil hatası vardır. Burada – Tadas

11

uzatmaya sahip olduğuna dikkat, geçersiz kılmak için stil actionBarTheme altında searchViewStyle geçerli:

<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 ile çalışmıyor. –

+0

Bunun, appcompat 22.1.1 ile çalıştığını onaylayabilirim – tinsukE