2016-01-20 184 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; 
     } 
    });