2012-11-28 48 views
7

我需要顯示在動作條搜索查看始終擴大,多了一個按鈕讓用戶快速訪問搜索字符串中的搜尋活動。
我有我的活動這個菜單佈局:在搜索活動類顯示ActionBarSherlock搜索查看始終擴展

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/action_search" 
     android:title="@string/action_search" 
     android:icon="@drawable/ic_action_search" 
     android:showAsAction="always" 
     android:actionViewClass="com.actionbarsherlock.widget.SearchView"/> 
    <item android:id="@+id/action_configure" 
     android:title="@string/action_configure" 
     android:icon="@android:drawable/ic_menu_preferences" 
     android:showAsAction="always" /> 
</menu> 

我配置動作條如下:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getSupportMenuInflater().inflate(R.menu.search, menu); 
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
    SearchView searchView = (SearchView)menu.findItem(R.id.action_search).getActionView(); 
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 
    searchView.setIconifiedByDefault(false); 
    searchView.setSubmitButtonEnabled(false); 
return true; 
} 

的問題是,如果我做searchView.setIconifiedByDefault(false);我看到這樣的畫面:
enter image description here

您可以注意到,有沒有第二個菜單項。在這裏,如果我設置的android:showAsAction =「總是| collapseActionView」,就變成默認處於摺疊狀態,但我可以看到現在第二項:
enter image description here
在上面的圖片中,我已經按下搜索圖標

有兩種我想不通的問題:

  1. 如何顯示總是兩個元素:用於配置操作展開搜索視圖和圖標?
  2. 如何擺脫這種醜陋的第二搜索圖標嗎?
+0

你已經找到了解決辦法? – Giuseppe

+0

不,我剛剛更換搜索查看到的EditText和移動其它菜單項進行動作條 – gorodechnyj

回答

3

這裏我隱藏內心的解決方案搜索圖標。

在你styles.xml您管理的主題,以下內容添加到您的application_theme部分(通常低於base_theme)

<!--Application Theme--> 
<style name="application_theme" parent="application_base_theme"> 
    <item name="searchViewSearchIcon">@android:color/transparent</item> 
    <item name="searchViewCloseIcon">@android:color/transparent</item> 
</style> 

這迫使動作條搜索小部件中的搜索圖標所有出現的是透明,不可見。

他們仍然會佔用在文本字段空間不過,在創建左側在上述圖標曾經是一種無形的餘量。如果要解決這個問題,而是必須用自己的類擴展com.actionbarsherlock.widget.SearchView並添加以下內容:

ImageView searchHintIcon = (ImageView) findViewById(R.id.abs__search_mag_icon); 
searchHintIcon.setVisibility(View.GONE); 

我將它添加到構造函數,但也覆蓋setIconified和setIconifiedByDefault,包括它那裏也是。這將迫使它隱藏圖標當你展開行動視圖。

有關說明操作欄中的其它圖標,可以嘗試設置:

android:showAsAction="collapseActionView|ifRoom" 

這應當引起搜索欄擴展時,有足夠的空間在操作欄,而不是迫使他們離開酒吧的完全。

HTH

+0

致謝。如果偶然發生,我會稍後使用它。 – gorodechnyj

0

解決兩個元件的表現方式被設置特定寬度搜索查看。

FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(350, FrameLayout.LayoutParams.WRAP_CONTENT); 
searchView.setLayoutParams(lp); 

,我使用的代碼是:

RES /菜單/ main.xml中

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item 
     android:id="@+id/search" 
     android:actionViewClass="com.actionbarsherlock.widget.SearchView" 
     android:showAsAction="always" 
     android:title="@string/action_search"/> 
    <item 
     android:id="@+id/settings" 
     android:showAsAction="ifRoom" 
     android:onClick="startSettingsActivity" 
     android:title="@string/action_settings"/> 
</menu> 

在我活動

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getSupportMenuInflater().inflate(R.menu.main, menu); 
    MenuItem searchViewItem = menu.findItem(R.id.search); 
    SearchView searchView = (SearchView) searchViewItem.getActionView(); 
    FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(350, FrameLayout.LayoutParams.WRAP_CONTENT); 
    searchView.setLayoutParams(lp); 

    searchView.setIconifiedByDefault(false); 
    searchView.setSubmitButtonEnabled(false); 

    return true; 
} 

public void startQuickSearchActivity(MenuItem menuItem){ 
    startActivity(new Intent(this, QuickSearchActivity_.class)); 
} 
3

我管理通過使用

mySearchView.setIconfied(false); 

而非setIconifiedByDefault()

P.S.以修復我用android.support.v7.widget.SearchView

+0

現在我才明白,使用HoloEverywhere這樣的東西是沒有必要的。支持包變得更加實用。 – gorodechnyj

+0

這不適用於我。始終顯示這個uggly searchview圖標...... :( – jcasadellaoller