需要在Android的Drawer Layout的垂直中心制作列表视图

 手机用户2502913137 发布于 2023-02-03 10:46

我设计了一个抽屉布局,其中包含列表中的一些选项(基本上是菜单名称和图标).但我无法在抽屉布局的垂直中心制作列表视图.这是我的总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);
    }
}

它是这样的:

在此输入图像描述

任何人都可以帮我把它放在中心位置.

谢谢..

1 个回答
  • 你的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);
    

    2023-02-03 10:50 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有