2016-01-20 209 views
3

我在我的项目中使用搜索视图来为用户添加搜索功能。我的问题是我想将搜索图标的位置从工具栏的右侧改变到左侧。在搜索视图中更改默认搜索图标位置

这是我的菜单代码:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"> 
<item 
    android:id="@+id/action_search" 
    android:title="@android:string/search_go" 
    android:icon="@drawable/search" 
    app:showAsAction="ifRoom|collapseActionView" 
    app:actionViewClass="android.support.v7.widget.SearchView" 
    android:visible="true"/> 

,这是我的活动代码:

private SearchView mSearchView; 
private MenuItem searchMenuItem; 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    searchMenuItem = menu.findItem(R.id.action_search); 
    mSearchView = (SearchView) searchMenuItem.getActionView(); 
    mSearchView.setLayoutParams(new ActionBar.LayoutParams(Gravity.LEFT)); 
    mSearchView.setOnQueryTextListener(listener); 
    return true; 
} 

SearchView.OnQueryTextListener listener = new SearchView.OnQueryTextListener() { 
    @Override 
    public boolean onQueryTextSubmit(String query) { 
     if (query.equals("") || query.equals(" ")){ 
      Toast.makeText(G.context,"ابتدا یک متن برای جستجو بنویسید.",Toast.LENGTH_SHORT).show(); 
      return false; 
     } 
     Intent intent = new Intent(ContentsActivity.this,SearchActivity.class); 
     intent.putExtra("KEYWORD", query); 
     ContentsActivity.this.startActivity(intent); 
     return false; 
    } 

    @Override 
    public boolean onQueryTextChange(String newText) { 
     return false; 
    } 
}; 
+0

可能重复:http://stackoverflow.com/questions/31295114/how-to-change-the-position-的-的菜单项的最动杆向左 – pleft

回答

0

所以,终于让我找到解决方案。 请注意,这不是一个好的解决方案。但它对我来说很好。

在menu_main.xml:

<item 
    android:id="@+id/action_search" 
    android:title="@android:string/search_go" 
    android:icon="@drawable/search" 
    app:showAsAction="always" 
    app:actionViewClass="android.support.v7.widget.SearchView" 
    android:visible="false"/> 

在菜单文件我搜索图标的可见性设置为假。所以现在当用户点击工具栏中的搜索图标时,我将可见性设置为true。

imgCatSearch.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      mSearchView.setBackgroundColor(Color.WHITE); 
      Animation anim = AnimationUtils.loadAnimation(G.context,R.anim.m_anim); 
      searchMenuItem.setVisible(true); 
      mSearchView.setIconified(false); 
      mSearchView.startAnimation(anim); 
     } 
    }); 

因此,当用户点击操作栏中的搜索按钮时,搜索视图可见性变为true并打开。

最后这段代码是当用户点击关闭按钮在搜索查看为:

mSearchView.setOnCloseListener(new SearchView.OnCloseListener() { 
     @Override 
     public boolean onClose() { 
      searchMenuItem.setVisible(false); 
      return false; 
     } 
    });