2016-04-28 114 views
1

在我的應用程序的一個活動中,我使用android.support.v7.widget.Toolbar作爲標題欄。默認情況下,標題欄佈局,左側最將搜索框/文本字段添加到android標題欄

  • TextView的標題欄的標題包含

    1. ImageButton的 「抽屜式導航欄」 在右

    2. 菜單項最

    我正在嘗試:

    • 組標題爲「」,所以基本上標題不會採取任何空間

    • 添加元素X(例如,某種文本輸入/搜索框的)之間的「抽屜式導航欄」和現有的菜單項,該元素將充分空間1和3

      之間

    我試圖添加X到菜單項,但我不能它的寬度設定爲在標題欄剩餘空間。我想我可能不得不手動修改標題欄佈局,而不是將X添加到菜單項。儘管如此,我仍然不知道如何讓這個元素自動獲取1到3之間的剩餘空間。你有什麼建議嗎?謝謝。

  • +0

    查看使用AppBarLayout xml元素 –

    回答

    3
    1. 集標題「」,所以基本上這個標題不會佔用任何空間。

    爲此,您不需要設置標題爲 「」 就叫

    getSupportActionBar().setDisplayShowTitleEnabled(false); 
    
  • 添加元素X(例如,某種文本輸入/搜索框)「抽屜式導航欄」和現有的菜單項,使得該元素將充分空間1和3之間
  • 爲此,您需要編輯menu.xml文件

    之間210

    並在活動中,你必須編寫代碼: -

    @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_user_list, menu); 
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
        SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView(); 
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
    
         @Override 
         public boolean onQueryTextSubmit(String query) { 
          //TODO write your code what you want to perform on search     
          return true; 
         } 
         @Override 
         public boolean onQueryTextChange(String query) { 
          //TODO write your code what you want to perform on search text change     
          return true; 
         } 
        }); 
        return true; 
    } 
    

    你並不需要添加X圖標手動它是由Android本身處理。一旦你點擊搜索圖標,它將打開標題上帶有十字圖標的編輯文本,一旦你點擊十字標題就會自動縮小。

    2

    你有沒有嘗試添加在你的菜單項的SearchView

    <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="Search" 
          app:actionViewClass="android.support.v7.widget.SearchView" 
          app:showAsAction="always"/> 
    
         <!-- other menu items --> 
    </menu> 
    

    然後在你的活動使用setIconifiedByDefault()爲false,以便在搜索字段始終顯示:

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
        MenuInflater inflater = getMenuInflater(); 
        inflater.inflate(R.menu.search_menu, menu); 
        final MenuItem item = menu.findItem(R.id.action_search); 
        final SearchView searchView = (SearchView) MenuItemCompat.getActionView(item); 
        searchView.setIconifiedByDefault(false); 
        return true; 
    }