我设计了一个抽屉布局,其中包含列表中的一些选项(基本上是菜单名称和图标).但我无法在抽屉布局的垂直中心制作列表视图.这是我的总xml布局:
这是抽屉布局java代码:
mTitle = mDrawerTitle = getTitle(); // load slide menu items navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items); // nav drawer icons from resources navMenuIcons = getResources() .obtainTypedArray(R.array.nav_drawer_icons); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerList = (ListView) findViewById(R.id.left_drawer); navDrawerItems = new ArrayList(); // adding nav drawer items to array // Home navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(0, -1))); // Find People navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(1, -1))); // Photos navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons.getResourceId(2, -1))); if(strTableBook.equals("yes")) { // Table Booking navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons.getResourceId(3, -1), true, "22")); } if(strGuestList.equals("yes")) { // Guest List navDrawerItems.add(new NavDrawerItem(navMenuTitles[4], navMenuIcons.getResourceId(4, -1))); } if(strBuyNow.equals("yes")) { //Buy now navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons.getResourceId(5, -1), true, "50+")); } Log.d("Testing", "here is 11111"); // Recycle the typed array navMenuIcons.recycle(); // setting the nav drawer list adapter adapter = new NavDrawerListAdapter(getApplicationContext(), navDrawerItems); mDrawerList.setAdapter(adapter); mDrawerList.setOnItemClickListener(new SlideMenuClickListener()); Log.d("Testing", "here is 22222"); // enabling action bar app icon and behaving it as toggle button // getActionBar().setDisplayHomeAsUpEnabled(true); // getActionBar().setHomeButtonEnabled(true); Log.d("Testing", "here is 33333"); mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, //nav menu toggle icon R.string.app_name, // nav drawer open - description for accessibility R.string.app_name // nav drawer close - description for accessibility ) { public void onDrawerClosed(View view) { // getActionBar().setTitle(mTitle); // calling onPrepareOptionsMenu() to show action bar icons invalidateOptionsMenu(); } public void onDrawerOpened(View drawerView) { // getActionBar().setTitle(mDrawerTitle); // calling onPrepareOptionsMenu() to hide action bar icons invalidateOptionsMenu(); } }; Log.d("Testing", "here is 444444"); mDrawerLayout.setDrawerListener(mDrawerToggle);
这是抽屉列表项的点击事件:
/** * Slide menu item click listener * */ private class SlideMenuClickListener implements ListView.OnItemClickListener { @Override public void onItemClick(AdapterView> arg0, View arg1, int position, long arg3) { // TODO Auto-generated method stub displayView(position); mDrawerLayout.closeDrawer(mDrawerList); } }
它是这样的:
任何人都可以帮我把它放在中心位置.
谢谢..
你的ListView高度是match_parent,所以将layout_gravity设置为center_vertical不会有所作为尝试设置gravity center_vertical而不是将listview内容垂直居中.
<ListView android:id="@+id/left_drawer" android:layout_ android:layout_ android:layout_gravity="left|center_vertical" android:gravity="center_vertical" android:choiceMode="singleChoice" android:background="#343434" android:divider android:listSelector="@drawable/list_selector_drawer" android:divider="#ffffff" />
这应该工作,但如果没有尝试这个:
<LinearLayout android:layout_ android:layout_ android:layout_gravity="left" android:background="#343434" > <ListView android:id="@+id/left_drawer" android:layout_ android:layout_ android:layout_gravity="center_vertical" android:background="#343434" android:choiceMode="singleChoice" android:divider="#ffffff" android:divider android:listSelector="@drawable/list_selector_drawer" /> </LinearLayout>
更改:
mDrawerLayout.closeDrawer(mDrawerList);
至:
mDrawerLayout.closeDrawer(Gravity.LEFT);