没有离开抽屉图标排列和启动器图标不显示图标、启动器、抽屉、排列

2023-09-06 07:46:08 作者:蹲街弑ゝ潇洒、

我只是试图从这个code复制;的http://www.androidhive.info/2013/11/android-sliding-menu-using-navigation-drawer

但我不能得到启动器图标和抽屉线没有左对齐。

下面是我MainActivity,我不知道如何纠正这一点。

 进口android.content.res.Configuration;进口android.content.res.TypedArray;进口android.os.Bundle;进口android.support.v4.app.ActionBarDrawerToggle;进口android.support.v4.app.Fragment;进口android.support.v4.app.FragmentManager;进口android.support.v4.widget.DrawerLayout;进口android.support.v7.app.ActionBarActivity;进口android.util.Log;进口android.view.Menu;进口android.view.MenuItem;进口android.view.View;进口android.widget.AdapterView;进口android.widget.ListView;进口com.nsm.onur.nkys.adapter.NavDrawerItem;进口com.nsm.onur.nkys.adapter.NavDrawerListAdapter;进口的java.util.ArrayList;公共类MainActivity扩展ActionBarActivity {    私人DrawerLayout mDrawerLayout;    私人的ListView mDrawerList;    私人ActionBarDrawerToggle mDrawerToggle;    //导航抽屉称号    私人CharSequence的mDrawerTitle;    //用于存储应用程序标题    私人CharSequence的mTitle;    //滑动菜单项    私有String [] navMenuTitles;    私人TypedArray navMenuIcons;    私人的ArrayList< NavDrawerItem> navDrawerItems;    私人NavDrawerListAdapter适配器;    @覆盖    保护无效的onCreate(捆绑savedInstanceState){        super.onCreate(savedInstanceState);        的setContentView(R.layout.activity_main);        mTitle = mDrawerTitle =的getTitle();        //负荷滑动菜单项        navMenuTitles = getResources()getStringArray(R.array.nav_drawer_items)。        从资源//导航抽屉图标        navMenuIcons = getResources()                .obtainTypedArray(R.array.nav_drawer_icons);        mDrawerLayout =(DrawerLayout)findViewById(R.id.drawer_layout);        mDrawerList =(ListView控件)findViewById(R.id.list_slidermenu);        navDrawerItems =新的ArrayList< NavDrawerItem>();        //添加导航抽屉里的物品数组        //首页        navDrawerItems.add(新NavDrawerItem(navMenuTitles [0],navMenuIcons.getResourceId(0,-1)));        navDrawerItems.add(新NavDrawerItem(navMenuTitles [1],navMenuIcons.getResourceId(1,-1)));        //回收类型数组        navMenuIcons.recycle();        mDrawerList.setOnItemClickListener(新SlideMenuClickListener());        //设置导航抽屉名单适配器        适配器=新NavDrawerListAdapter(getApplicationContext()                navDrawerItems);        mDrawerList.setAdapter(适配器);        //使操作栏中的应用程序图标和行为作为切换按钮        getSupportActionBar()setDisplayHomeAsUpEnabled(真)。        getSupportActionBar()setHomeButtonEnabled(真)。        mDrawerToggle =新ActionBarDrawerToggle(这一点,mDrawerLayout,                R.drawable.ic_drawer,//导航菜单切换图标                R.string.app_name,//导航抽屉打开 - 描述的可访问性                R.string.app_name //导航抽屉接近 - 描述的可访问性        ){            公共无效onDrawerClosed(查看视图){                。getSupportActionBar()的setTitle(mTitle);                //调用prepareOptionsMenu()来显示操作栏图标                invalidateOptionsMenu();            }            公共无效onDrawerOpened(查看drawerView){                。getSupportActionBar()的setTitle(mDrawerTitle);                //调用prepareOptionsMenu()隐藏操作栏图标                invalidateOptionsMenu();            }        };        mDrawerLayout.setDrawerListener(mDrawerToggle);        如果(savedInstanceState == NULL){            //对第一个项目的资产净值首次显示视图            displayView(0);        }    }    / **     *滑动菜单项,点击监听器     * * /    私有类SlideMenuClickListener工具            ListView.OnItemClickListener {        @覆盖        公共无效onItemClick(适配器视图<>母公司,观景,INT位置,                                长ID){            //选定导航抽屉项显示视图            displayView(位置);        }    }    @覆盖    公共布尔onCreateOptionsMenu(菜单菜单){        。getMenuInflater()膨胀(R.menu.menu_main,菜单);        返回true;    }    @覆盖    公共布尔onOptionsItemSelected(菜单项项){        //切换上选择操作栏中的应用程序图标/标题导航抽屉        如果(mDrawerToggle.onOptionsItemSelected(项目)){            返回true;        }        //处理操作栏中点击动作        开关(item.getItemId()){            案例R.id.action_settings:                返回true;            默认:                返回super.onOptionsItemSelected(项目);        }    }    / ***     *时调用invalidateOptionsMenu()被触发     * /    @覆盖    prepareOptionsMenu(菜单菜单)上公共布尔{        //如果导航抽屉被打开,隐藏行动项目        布尔drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);        menu.findItem(R.id.action_settings).setVisible(drawerOpen!);        返回super.on prepareOptionsMenu(菜单);    }    / **     所选导航抽屉列表项* Diplaying片段视图     * * /    私人无效displayView(INT位置){        //更新替换片段的主要内容        片段片段= NULL;        开关(位置){            情况下0:                片段=新PersonelIp();                打破;            情况1:                片段=新PersonelIp();                打破;            默认:                打破;        }        如果(片段!= NULL){            FragmentManager fragmentManager = getSupportFragmentManager();            fragmentManager.beginTransaction()                    .replace(R.id.frame_container,片段).commit();            //更新所选项目和标题,然后关上抽屉            mDrawerList.setItemChecked(位置,真正的);            mDrawerList.setSelection(位置);            (navMenuTitles [位置])的setTitle;            mDrawerLayout.closeDrawer(mDrawerList);        }其他{            //错误创建片段            Log.e(MainActivity,出错创建片段);        }    }    @覆盖    公共无效的setTitle(CharSequence的标题){        mTitle =称号;        。getSupportActionBar()的setTitle(mTitle);    }    / **     *当使用ActionBarDrawerToggle,你必须在调用它     * onPostCreate()和onConfigurationChanged()...     * /    @覆盖    保护无效onPostCreate(捆绑savedInstanceState){        super.onPostCreate(savedInstanceState);        //同步onRestoreInstanceState后切换状态已经发生。        mDrawerToggle.syncState();    }    @覆盖    公共无效onConfigurationChanged(配置NEWCONFIG){        super.onConfigurationChanged(NEWCONFIG);        //把任何配置更改抽屉toggls        mDrawerToggle.onConfigurationChanged(NEWCONFIG);    }} 

解决方案

尝试从 Theme.AppCompat.Light修改 AppTheme 的母公司。 DarkActionBar Theme.Holo.Light.DarkActionBar

安卓apex启动器抽屉里面的图标怎么改啊

I've just tried to copy from this code; http://www.androidhive.info/2013/11/android-sliding-menu-using-navigation-drawer

But I couldn't get launcher icon and drawer lines are not left aligned.

Here is my MainActivity ,I have no idea how to correct this.

import android.content.res.Configuration;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;

import com.nsm.onur.nkys.adapter.NavDrawerItem;
import com.nsm.onur.nkys.adapter.NavDrawerListAdapter;

import java.util.ArrayList;

public class MainActivity extends ActionBarActivity {
    private DrawerLayout mDrawerLayout;
    private ListView mDrawerList;
    private ActionBarDrawerToggle mDrawerToggle;

    // nav drawer title
    private CharSequence mDrawerTitle;

    // used to store app title
    private CharSequence mTitle;

    // slide menu items
    private String[] navMenuTitles;
    private TypedArray navMenuIcons;

    private ArrayList<NavDrawerItem> navDrawerItems;
    private NavDrawerListAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        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.list_slidermenu);

        navDrawerItems = new ArrayList<NavDrawerItem>();

        // adding nav drawer items to array
        // Home
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(0, -1)));
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(1, -1)));

        // Recycle the typed array
        navMenuIcons.recycle();

        mDrawerList.setOnItemClickListener(new SlideMenuClickListener());

        // setting the nav drawer list adapter
        adapter = new NavDrawerListAdapter(getApplicationContext(),
                navDrawerItems);
        mDrawerList.setAdapter(adapter);

        // enabling action bar app icon and behaving it as toggle button
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);

        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) {
                getSupportActionBar().setTitle(mTitle);
                // calling onPrepareOptionsMenu() to show action bar icons
                invalidateOptionsMenu();
            }

            public void onDrawerOpened(View drawerView) {
                getSupportActionBar().setTitle(mDrawerTitle);
                // calling onPrepareOptionsMenu() to hide action bar icons
                invalidateOptionsMenu();
            }
        };
        mDrawerLayout.setDrawerListener(mDrawerToggle);

        if (savedInstanceState == null) {
            // on first time display view for first nav item
            displayView(0);
        }
    }

    /**
     * Slide menu item click listener
     * */
    private class SlideMenuClickListener implements
            ListView.OnItemClickListener {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                                long id) {
            // display view for selected nav drawer item
            displayView(position);
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // toggle nav drawer on selecting action bar app icon/title
        if (mDrawerToggle.onOptionsItemSelected(item)) {
            return true;
        }
        // Handle action bar actions click
        switch (item.getItemId()) {
            case R.id.action_settings:
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    /***
     * Called when invalidateOptionsMenu() is triggered
     */
    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        // if nav drawer is opened, hide the action items
        boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
        menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
        return super.onPrepareOptionsMenu(menu);
    }

    /**
     * Diplaying fragment view for selected nav drawer list item
     * */
    private void displayView(int position) {
        // update the main content by replacing fragments
        Fragment fragment = null;
        switch (position) {
            case 0:
                fragment = new PersonelIp();
                break;
            case 1:
                fragment=new PersonelIp();
                break;
            default:
                break;
        }

        if (fragment != null) {
            FragmentManager fragmentManager = getSupportFragmentManager();
            fragmentManager.beginTransaction()
                    .replace(R.id.frame_container, fragment).commit();

            // update selected item and title, then close the drawer
            mDrawerList.setItemChecked(position, true);
            mDrawerList.setSelection(position);
            setTitle(navMenuTitles[position]);
            mDrawerLayout.closeDrawer(mDrawerList);
        } else {
            // error in creating fragment
            Log.e("MainActivity", "Error in creating fragment");
        }
    }

    @Override
    public void setTitle(CharSequence title) {
        mTitle = title;
        getSupportActionBar().setTitle(mTitle);
    }

    /**
     * When using the ActionBarDrawerToggle, you must call it during
     * onPostCreate() and onConfigurationChanged()...
     */

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        // Sync the toggle state after onRestoreInstanceState has occurred.
        mDrawerToggle.syncState();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        // Pass any configuration change to the drawer toggls
        mDrawerToggle.onConfigurationChanged(newConfig);
    }

}

解决方案

Try to change parent of the AppTheme from Theme.AppCompat.Light.DarkActionBar to Theme.Holo.Light.DarkActionBar.

 
精彩推荐
图片推荐