11e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell/* 21e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * Copyright (C) 2013 The Android Open Source Project 31e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * 41e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * Licensed under the Apache License, Version 2.0 (the "License"); 51e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * you may not use this file except in compliance with the License. 61e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * You may obtain a copy of the License at 71e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * 81e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * http://www.apache.org/licenses/LICENSE-2.0 91e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * 101e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * Unless required by applicable law or agreed to in writing, software 111e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * distributed under the License is distributed on an "AS IS" BASIS, 121e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * See the License for the specific language governing permissions and 141e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * limitations under the License. 151e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell */ 161e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 171e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 181e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powellpackage com.example.android.supportv4.widget; 191e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 201e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powellimport android.app.ActionBar; 211e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powellimport android.app.Activity; 221e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powellimport android.os.Build; 231e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powellimport android.os.Bundle; 241e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powellimport android.view.MenuItem; 251e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powellimport android.view.View; 261e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powellimport android.view.ViewTreeObserver; 271e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powellimport android.widget.AdapterView; 281e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powellimport android.widget.ArrayAdapter; 291e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powellimport android.widget.ListView; 301e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powellimport android.widget.TextView; 319c76e9550ada0475f1c750e5672128630d2a028cAurimas Liutikas 32def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.slidingpanelayout.widget.SlidingPaneLayout; 33def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikas 341e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powellimport com.example.android.supportv4.R; 359c76e9550ada0475f1c750e5672128630d2a028cAurimas Liutikasimport com.example.android.supportv4.Shakespeare; 361e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 371e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell/** 381e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * This example illustrates a common usage of SlidingPaneLayout in the Android support library. 391e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * 401e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * <p>A SlidingPaneLayout should be positioned at the top of your view hierarchy, placing it 411e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * below the action bar but above your content views. It is ideal as a two-pane layout 421e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * for larger screens, used in place of a horizontal LinearLayout.</p> 431e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * 441e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * <p>What separates SlidingPaneLayout from LinearLayout in this usage is that SlidingPaneLayout 451e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * allows these wide, two-pane layouts to overlap when horizontal space is at a premium. The user 461e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * can then access both panes by physically sliding the content pane into view or out of the way 471e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * or implicitly by moving focus between the two panes. This can greatly simplify development 481e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * of Android apps that support multiple form factors and screen sizes.</p> 491e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * 501e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * <p>When it comes to your navigation hierarchy, the left pane of a SlidingPaneLayout is always 511e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * considered to be one level up from the right content pane. As such, your Action Bar's 521e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * Up navigation should be enabled if the right pane is obscuring the left pane, and invoking it 531e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * should open the panes, revealing the left pane for normal interaction. From this open state 541e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * where the left pane is in primary focus, the Action Bar's Up affordance should act as if 551e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * both panes were fully visible in the activity window and navigate to the activity one level up 561e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * in the app's logical hierarchy. If the activity is the root of the application's task, the up 571e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * affordance should be disabled when the sliding pane is open and showing the left pane. 581e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * This code example illustrates this root activity case.</p> 591e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * 601e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * <p>Note that SlidingPaneLayout differs in usage from DrawerLayout. While DrawerLayout offers 611e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * sliding utility drawers for extended navigation options and actions, the panes of a 621e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * SlidingPaneLayout are firmly part of the content itself. If it would not make sense for 631e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * both panes to be visible all the time on a sufficiently wide screen, DrawerLayout and its 641e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * associated patterns are likely to be a better choice for your usage.</p> 651e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell */ 661e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powellpublic class SlidingPaneLayoutActivity extends Activity { 671e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell private SlidingPaneLayout mSlidingLayout; 681e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell private ListView mList; 691e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell private TextView mContent; 701e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 711e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell private ActionBarHelper mActionBar; 721e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 731e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell @Override 741e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell protected void onCreate(Bundle savedInstanceState) { 751e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell super.onCreate(savedInstanceState); 761e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 771e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell setContentView(R.layout.sliding_pane_layout); 781e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 79fa2e2acf79d791a90410025daad438968550d18cAlan Viverette mSlidingLayout = findViewById(R.id.sliding_pane_layout); 80fa2e2acf79d791a90410025daad438968550d18cAlan Viverette mList = findViewById(R.id.left_pane); 81fa2e2acf79d791a90410025daad438968550d18cAlan Viverette mContent = findViewById(R.id.content_text); 821e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 831e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell mSlidingLayout.setPanelSlideListener(new SliderListener()); 841e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell mSlidingLayout.openPane(); 851e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 861e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell mList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, 871e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell Shakespeare.TITLES)); 881e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell mList.setOnItemClickListener(new ListItemClickListener()); 891e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 901e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell mActionBar = createActionBarHelper(); 911e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell mActionBar.init(); 921e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 931e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell mSlidingLayout.getViewTreeObserver().addOnGlobalLayoutListener(new FirstLayoutListener()); 941e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell } 951e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 961e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell @Override 971e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell public boolean onOptionsItemSelected(MenuItem item) { 981e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell /* 991e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * The action bar up action should open the slider if it is currently closed, 1001e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * as the left pane contains content one level up in the navigation hierarchy. 1011e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell */ 1021e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell if (item.getItemId() == android.R.id.home && !mSlidingLayout.isOpen()) { 1039c76e9550ada0475f1c750e5672128630d2a028cAurimas Liutikas mSlidingLayout.openPane(); 1041e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell return true; 1051e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell } 1061e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell return super.onOptionsItemSelected(item); 1071e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell } 1081e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 1091e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell /** 1101e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * This list item click listener implements very simple view switching by changing 1111e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * the primary content text. The slider is closed when a selection is made to fully 1121e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * reveal the content. 1131e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell */ 1141e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell private class ListItemClickListener implements ListView.OnItemClickListener { 1151e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell @Override 1161e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 1171e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell mContent.setText(Shakespeare.DIALOGUE[position]); 1181e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell mActionBar.setTitle(Shakespeare.TITLES[position]); 1199c76e9550ada0475f1c750e5672128630d2a028cAurimas Liutikas mSlidingLayout.closePane(); 1201e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell } 1211e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell } 1221e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 1231e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell /** 1241e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * This panel slide listener updates the action bar accordingly for each panel state. 1251e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell */ 1261e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell private class SliderListener extends SlidingPaneLayout.SimplePanelSlideListener { 1271e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell @Override 1281e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell public void onPanelOpened(View panel) { 1291e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell mActionBar.onPanelOpened(); 1301e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell } 1311e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 1321e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell @Override 1331e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell public void onPanelClosed(View panel) { 1341e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell mActionBar.onPanelClosed(); 1351e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell } 1361e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell } 1371e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 1381e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell /** 1391e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * This global layout listener is used to fire an event after first layout occurs 1401e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * and then it is removed. This gives us a chance to configure parts of the UI 1411e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * that adapt based on available space after they have had the opportunity to measure 1421e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * and layout. 1431e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell */ 1441e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell private class FirstLayoutListener implements ViewTreeObserver.OnGlobalLayoutListener { 1451e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell @Override 1461e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell public void onGlobalLayout() { 1471e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell mActionBar.onFirstLayout(); 14863a2530d57dfe7a90de8b3ef70088e23773428fbAurimas Liutikas if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 14963a2530d57dfe7a90de8b3ef70088e23773428fbAurimas Liutikas mSlidingLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this); 15063a2530d57dfe7a90de8b3ef70088e23773428fbAurimas Liutikas } else { 15163a2530d57dfe7a90de8b3ef70088e23773428fbAurimas Liutikas //noinspection deprecation 15263a2530d57dfe7a90de8b3ef70088e23773428fbAurimas Liutikas mSlidingLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this); 15363a2530d57dfe7a90de8b3ef70088e23773428fbAurimas Liutikas } 1541e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell } 1551e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell } 1561e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 1571e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell /** 1581e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * Create a compatible helper that will manipulate the action bar if available. 1591e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell */ 1601e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell private ActionBarHelper createActionBarHelper() { 1611e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { 1621e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell return new ActionBarHelperICS(); 1631e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell } else { 1641e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell return new ActionBarHelper(); 1651e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell } 1661e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell } 1671e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 1681e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell /** 1691e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * Stub action bar helper; this does nothing. 1701e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell */ 1711e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell private class ActionBarHelper { 1721e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell public void init() {} 1731e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell public void onPanelClosed() {} 1741e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell public void onPanelOpened() {} 1751e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell public void onFirstLayout() {} 1761e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell public void setTitle(CharSequence title) {} 1771e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell } 1781e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 1791e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell /** 1801e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell * Action bar helper for use on ICS and newer devices. 1811e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell */ 1821e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell private class ActionBarHelperICS extends ActionBarHelper { 1831e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell private final ActionBar mActionBar; 1841e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell private CharSequence mDrawerTitle; 1851e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell private CharSequence mTitle; 1861e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 1871e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell ActionBarHelperICS() { 1881e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell mActionBar = getActionBar(); 1891e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell } 1901e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 1911e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell @Override 1921e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell public void init() { 1931e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell mActionBar.setDisplayHomeAsUpEnabled(true); 1941e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell mActionBar.setHomeButtonEnabled(true); 1951e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell mTitle = mDrawerTitle = getTitle(); 1961e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell } 1971e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 1981e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell @Override 1991e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell public void onPanelClosed() { 2001e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell super.onPanelClosed(); 2011e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell mActionBar.setDisplayHomeAsUpEnabled(true); 2021e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell mActionBar.setHomeButtonEnabled(true); 2031e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell mActionBar.setTitle(mTitle); 2041e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell } 2051e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 2061e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell @Override 2071e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell public void onPanelOpened() { 2081e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell super.onPanelOpened(); 2091e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell mActionBar.setHomeButtonEnabled(false); 2101e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell mActionBar.setDisplayHomeAsUpEnabled(false); 2111e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell mActionBar.setTitle(mDrawerTitle); 2121e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell } 2131e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 2141e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell @Override 2151e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell public void onFirstLayout() { 2169c76e9550ada0475f1c750e5672128630d2a028cAurimas Liutikas if (mSlidingLayout.isSlideable() && !mSlidingLayout.isOpen()) { 2171e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell onPanelClosed(); 2181e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell } else { 2191e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell onPanelOpened(); 2201e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell } 2211e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell } 2221e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 2231e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell @Override 2241e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell public void setTitle(CharSequence title) { 2251e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell mTitle = title; 2261e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell } 2271e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell } 2281e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell 2291e549373c15dfaa60283e09b87221b25f0b8b0d0Adam Powell} 230