我正在使用appcompat v7库处理我的应用程序的材料设计版本,我遇到了导航抽屉的问题.打开时,材料设计工具栏中的按钮将停止运行 – 导航抽屉外的任何触摸都会关闭抽屉.以下是我的意思的gif
the gif http://images.rymate.co.uk/images/83JXi1X.png
这是我用于活动的xml布局:
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- The main content view --> <FrameLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.Toolbar android:id="@+id/action_toolbar" android:layout_height="wrap_content" android:layout_width="match_parent" android:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimary" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" android:elevation="4dp" /> <FrameLayout android:id="@+id/note_list_container" android:layout_marginTop="?attr/actionBarSize" android:layout_width="match_parent" android:layout_height="match_parent" /> <net.rymate.notes.ui.FloatingActionButton android:id="@+id/fabbutton" android:layout_width="72dp" android:layout_height="72dp" android:layout_gravity="bottom|right" android:layout_marginBottom="16dp" android:layout_marginRight="16dp" /> </FrameLayout> <!-- The navigation drawer --> <LinearLayout android:id="@+id/left_drawer" android:layout_width="300dp" android:layout_marginTop="?attr/actionBarSize" android:layout_height="match_parent" android:layout_gravity="start" android:orientation="vertical"> <ListView android:id="@+id/cat_list" android:layout_width="match_parent" android:layout_height="match_parent" android:choiceMode="singleChoice" android:divider="@android:color/transparent" android:dividerHeight="0dp" android:background="?catBackColour" /> </LinearLayout> </android.support.v4.widget.DrawerLayout>
这是onCreate代码初始化抽屉和工具栏.
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ROBOTO_LIGHT = Typeface.createFromAsset(this.getAssets(),"Roboto-Light.ttf"); ROBOTO_LIGHT_ITALICS = Typeface.createFromAsset(this.getAssets(),"Roboto-LightItalic.ttf"); setContentView(R.layout.activity_notes); if (findViewById(R.id.note_container) != null) { // The detail container view will be present only in the // large-screen layouts (res/values-large and // res/values-sw600dp). If this view is present,then the // activity should be in two-pane mode. mTwoPane = true; // In two-pane mode,list items should be given the // 'activated' state when touched. FragmentManager fm = getSupportFragmentManager(); //list.setActivateOnItemClick(true); } if (!mTwoPane) { final FloatingActionButton mFab = (FloatingActionButton) findViewById(R.id.fabbutton); mFab.init(Color.parseColor("#1e90ff")); mFab.setFabDrawable(getResources().getDrawable(R.drawable.ic_action_new)); mFab.showFab(); mFab.setOnClickListener(this); list = new NotesListFragment(mFab); } else { list = new NotesListFragment(); } Toolbar toolbar = (Toolbar) findViewById(R.id.action_toolbar); setSupportActionBar(toolbar); getSupportFragmentManager().beginTransaction() .replace(R.id.note_list_container,list) .commit(); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); // the layout mDrawerLinear = (LinearLayout) findViewById(R.id.left_drawer); mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow,GravityCompat.START); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); mDrawerLayout.setScrimColor(getResources().getColor(android.R.color.transparent)); mDrawerToggle = new ActionBarDrawerToggle( this,/* host Activity */ mDrawerLayout,/* DrawerLayout object */ toolbar,/* toolbar */ R.string.drawer_open,/* "open drawer" description */ R.string.drawer_close /* "close drawer" description */ ) { /** Called when a drawer has settled in a completely closed state. */ public void onDrawerClosed(View view) { getSupportActionBar().setTitle("Rymate Notes"); supportInvalidateOptionsMenu(); } /** Called when a drawer has settled in a completely open state. */ public void onDrawerOpened(View drawerView) { getSupportActionBar().setTitle("Categories"); supportInvalidateOptionsMenu(); } }; // Set the drawer toggle as the DrawerListener mDrawerLayout.setDrawerListener(mDrawerToggle); pref = getSharedPreferences("rymatenotesprefs",MODE_PRIVATE); mDrawerList = (ListView) findViewById(R.id.cat_list); mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); mDbHelper = new NotesDbAdapter(this); mDbHelper.open(); if (mDbHelper.fetchAllNotes().getCount() == 0) { IntroFragment fragment = new IntroFragment(); getSupportFragmentManager().beginTransaction() .replace(R.id.note_list_container,fragment) .commit(); } getCategories(); // calls a function which populates the listview }
有没有办法可以解决这个问题?