2016-01-07 39 views
0

我想更改搜索图标因为我的搜索按钮图标是白色的..Android:无法从searchView获取搜索按钮。

因此我找到了一个代码来获取搜索按钮的视图。

SearchView searchView = (SearchView) menu.findItem(R.id.action_search) 
       .getActionView(); 
     //SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE); 
     //searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 

     int searchImgId = getResources().getIdentifier("android:id/search_button", null, null); 
     AppCompatImageView v = (AppCompatImageView) searchView.findViewById(searchImgId); 
     v.setImageResource(R.drawable.action_search); 

即使我将AppCompatImageView更改为ImageView,但仍然为null。我猜在searchView的搜索按钮上的Id与searchImgId不匹配,所以我得到空。如何获取正确的ID以检索搜索按钮。

+0

你夸大菜单XML文件中的onCreateOptionsMenu中,你必须搜索图标? –

回答

0

我想你没有充气菜单的XML文件。你可以这样做,这就是你变得空的原因。 你必须首先充气你的菜单文件,从那里你可以得到你的搜索按钮ID。

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.sample_actions, menu); 
     SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search)); 

     searchView.setOnQueryTextListener(this); 
     searchView.onActionViewExpanded(); 
     return super.onCreateOptionsMenu(menu); 
    } 

sample_action.xml

<?xml version="1.0" encoding="utf-8"?> 

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

    <item 
     android:id="@+id/action_search" 
     android:title="@string/menu_search" 
     app:showAsAction="always" 
     app:actionViewClass="android.support.v7.widget.SearchView" 
     android:icon="@drawable/search_white"/> 
</menu> 
+0

但我和右侧的搜索按钮看到searchview是白色的颜色 – LittleFunny

+0

是否要更改搜索按钮的颜色? –

+0

是的..但我通过的图标是黑色的,它不知何故变成白色 – LittleFunny

0

更新

你可能会寻找这个

searchView.setBackgroundColor(Color.BLACK); 

但你想完全自定义它,你可以试试这个,我建议的代码是,让UI自己照顾自己。

我知道它是白色的,我知道这不是你想要的。您可以轻松地定制,以任何drawable,它也给你更大的自由发挥它

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:layout_margin="8dp" 
     android:orientation="horizontal"> 

     <EditText 
      android:id="@+id/editText" 
      android:layout_width="match_parent" 
      android:layout_height="50dp" 
      android:layout_marginRight="-50dp" 
      android:layout_weight="1" 
      android:hint="some Text" 
      android:paddingLeft="4dp" /> 

     <ImageView 
      android:id="@+id/imageButton" 
      style="?actionBarStyle" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:src="@android:drawable/ic_menu_search" /> 
    </LinearLayout> 

输出

这种布局会出现这样的事情,从中可以改变搜索imageView没有任何喧嚣,根据需要改变editText的属性。

所以你的View将在布局中照顾,所以你只会在功能上编码。更像Android方式

enter image description here