12

現在,與ActionBar類中的導航模式相關的所有方法(如setNavigationMode() ...)現在都被棄用。如何在工具欄上設置NAVIGATION_MODE_LIST新的appcompat v7 21

的文檔解釋:

Action bar navigation modes are deprecated and not supported by inline toolbar action bars. Consider using other common navigation patterns instead. 

在我目前的應用,對動作條的好手。我如何在新版本的appcompat v7 21中的新工具欄上應用NAVIGATION_MODE_LIST
在此先感謝。

回答

17

對於API 21,方法setNavigationMode(ActionBar.NAVIGATION_MODE_LIST)deprecated

有微調的工作,最好的辦法是使用工具欄是這樣的:

<android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar_actionbar" 
     android:layout_height="?attr/actionBarSize" 
     android:layout_width="match_parent" 
     android:background="?attr/colorPrimary"> 

    <Spinner 
      android:id="@+id/spinner_toolbar" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 

</android.support.v7.widget.Toolbar> 

您可以找到Google IO 2014

+0

謝謝,我會試試看 – 2014-10-29 08:10:48

+1

你能告訴一個解決方案來NAVIGATION_MODE_TAB工具欄上 – 2014-10-29 08:44:46

+1

不存在使用SlidingTabsBasic提供此處?http://developer.android。 com/samples/SlidingTabsBasic/index.html – 2014-10-29 08:52:03

5

像往常一樣加布裏埃萊一個例子是正確的,那麼你的代碼看起來這樣的:

所以它看起來像這樣的事情:

private ActionBar actionBar; 
    private Toolbar toolbar; 
    private Spinner spinner; 
    private List<String> mNavigationItems; 
    private ArrayAdapter<CharSequence> mArrayAdapter; 
    /*** 
    * Boolean to know which version is running 
    */ 
    private boolean postICS,postLollipop; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_nav_list);//find the toolbar 
     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     postLollipop =getResources().getBoolean(R.bool.postLollipop); 
     if(postLollipop){ 
      toolbar.setElevation(15); 
     } 
     //define the toolbar as the ActionBar 
     setSupportActionBar(toolbar); 
     actionBar=getSupportActionBar(); 
     //now manage the spinner 
     mNavigationItems=new ArrayList<String>(); 
     mNavigationItems.add("navigation 1"); 
     mNavigationItems.add("nav 2"); 
     mNavigationItems.add("navigation 3"); 
     spinner= (Spinner) findViewById(R.id.action_bar_spinner); 
     mArrayAdapter = new ArrayAdapter(this, R.layout.actionbar_spinner_dropdown_item, mNavigationItems); 
     mArrayAdapter.setDropDownViewResource(R.layout.actionbar_spinner_dropdown_item); 
     spinner.setAdapter(mArrayAdapter); 
    } 

並注意不要使用spinnerAdapter(因爲您將無法使用AppTheme管理其風格)。

如果你想使用Tab鍵(NavigationMode.Tabs),你應該用現在的設計庫(這裏解釋:http://android-developers.blogspot.fr/2015/05/android-design-support-library.html?m=1)and複製粘貼下面 「

標籤通過標籤在你的應用程序不同的視圖之間切換不是 新概念,材料設計,他們同樣在家裏作爲一個頂級 級導航模式或爲您的應用程序內組織的 含量不同的分組(比如,不同類型的音樂)。

設計庫的TabLayout imple兩個固定選項卡,其中 視圖的寬度在所有選項卡之間平均分配,以及 可滾動選項卡,其中選項卡不是統一大小,並且可以水平滾動 。可以通過編程添加標籤:

TabLayout tabLayout = ...; (tabLayout.newTab()。setText(「Tab 1」));但是,如果 正在使用ViewPager進行標籤之間的水平分頁,則您可以直接使用PagerAdapter的getPageTitle()創建標籤,然後使用setupWithViewPager()將兩者連接在一起。這確保 選項卡選擇事件更新ViewPager和頁面更改更新 選定的選項卡。 。

+1

我不得不使用R.layout.support_simple_spinner_dropdown_item而不是R.layout.actionbar_spinner_dropdown_item,否則爲我工作。 – Mick 2015-08-26 19:12:39

相關問題