2013-10-11 57 views
0

我需要知道如何在點擊它時更改actionbar searchview圖標?我目前使用「Theme.Holo.Light」,我不想再改變這個主題。無論如何可以在ActionBar上單擊它時更改SearchView圖標嗎?android actionbar searchview icon change

+0

其易於更改searchview圖標,當我們使用自定義的操作欄。 – harikrishnan

+0

自定義actionbar的意思? – ppshein

+0

當搜索視圖展開時是否要更改圖標? – Szymon

回答

1

是的,這是可能的。 你應該做的是爲搜索菜單選項創建自定義佈局,比如說searchLayout。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@android:color/transparent" 
    android:orientation="vertical" > 

    <ImageView 

     android:id="@+id/img_search" 
     android:layout_width="40dip" 
     android:layout_height="40dip" /> 

</LinearLayout> 

現在在您的菜單選項中使用此佈局。

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

<item 
     android:id="@+id/menuSearch" 
     android:actionLayout="@layout/searchLayout" 
     android:showAsAction="always" 
     android:title="search"/> 

</menu> 

現在你只需要得到從菜單選項的觀點:

@Override 
     public boolean onPrepareOptionsMenu(Menu menu) 
     { 
      final MenuItem item = menu.findItem(R.id.menuSearch); 

     LinearLayout layoutSearchView = (LinearLayout) item.getActionView(); 

     ImageView img = (ImageView) layoutSearchView.findViewById(R.id. img_search); 

     // now you have your image of search . on click you can change the image using set onclick listener of image or do what ever you want with the layout. 

     img.setOnClickListener(new View.OnClickListener() 
       { 
        @Override 
        public void onClick(View v) 
        { 
         // change your image 
        } 
       }); 
    } 

對不起任何錯字。 希望這會有所幫助。

注意:我正在修改onPrepareOptionsMenu中的代碼片段,但我建議創建一個方法並從onPrepareOptionsMenu傳遞菜單項並執行該方法中的任務。

+0

對不起。它不起作用。它仍然出現「灰色」搜索按鈕 – ppshein

+0

你有沒有得到layoutSearchView?請調試並檢查 – KDeogharkar

+0

如何嘗試獲取它?我不清楚。 – ppshein