Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
隐藏导航抽屉菜单项-Android_Android_Hide_Navigation Drawer - Fatal编程技术网

隐藏导航抽屉菜单项-Android

隐藏导航抽屉菜单项-Android,android,hide,navigation-drawer,Android,Hide,Navigation Drawer,我有一个导航抽屉。调用事件时,我想为用户隐藏一个导航菜单项。我该怎么做 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sliding_menu); if (android.os.Build.VERSION.SDK_INT > 9) { StrictMode.ThreadP

我有一个导航抽屉。调用事件时,我想为用户隐藏一个导航菜单项。我该怎么做

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sliding_menu);

    if (android.os.Build.VERSION.SDK_INT > 9) {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }
    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_layout1);
    mDrawerList = (ListView) findViewById(R.id.list_slidermenu1);

    navDrawerItems = new ArrayList<NavDrawerItem>();

    // adding nav drawer items to array
    // Home
    navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(0, -1)));
    // Profil
    navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(1, -1)));
    // Prospek
    navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons.getResourceId(2, -1)));
    // Announcement
    navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons.getResourceId(3, -1), true,
            cariTotal("http://192.168.0.23/api/android/announcement/").toString()));
    // Logout
    navDrawerItems.add(new NavDrawerItem(navMenuTitles[4], navMenuIcons.getResourceId(4, -1)));

    // Recycle the typed array
    navMenuIcons.recycle();
    //set event
    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.string.app_name,
            R.string.app_name
    ){
        public void onDrawerClosed(View view) {
            getSupportActionBar().setTitle(mTitle);
            // calling onPrepareOptionsMenu() to show action bar icons
            invalidateOptionsMenu();
        }

        public void onDrawerOpened(View drawerView) {
            getSupportActionBar().setTitle(mDrawerTitle);
            //mDrawerList.bringToFront();
            //mDrawerLayout.requestLayout();
            // 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);
    }
}
private void displayView(int position) {
    // update the main content by replacing fragments
    android.app.Fragment fragment = null;
    switch (position) {
        case 0:
            fragment = new HomeFragment();
            break;
        case 1:
            fragment = new ProfilFragment();
            break;
        case 2:
            fragment = new ProspekFragment();
            break;
        case 3:
            fragment = new AnnouncementFragment();
            break;
        case 4:
            Logout();
            break;
        default:
            break;
    }

    if (fragment != null) {
        android.app.FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction()
                .replace(R.id.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("SlidingMenu", "Error in creating fragment");
    }
}
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.滑动菜单);
如果(android.os.Build.VERSION.SDK_INT>9){
StrictMode.ThreadPolicy policy=新建StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(策略);
}
mTitle=mDrawerTitle=getTitle();
//加载幻灯片菜单项
navMenuTitles=getResources().getStringArray(R.array.nav\u抽屉\u项目);
//参考资料中的导航抽屉图标
navMenuIcons=getResources()
.obtainTypedArray(R.array.nav_drawer_图标);
mDrawerLayout=(抽屉布局)findViewById(R.id.抽屉布局1);
mDrawerList=(ListView)findViewById(R.id.list\u slidemenu1);
navDrawerItems=新的ArrayList();
//将导航抽屉项添加到阵列
//家
添加(新的NavDrawerItem(navMenuTitles[0],navMenuIcons.getResourceId(0,-1));
//Profil
添加(新的NavDrawerItem(navMenuTitles[1],navMenuIcons.getResourceId(1,-1));
//普罗斯佩克
添加(新的NavDrawerItem(navMenuTitles[2],navMenuIcons.getResourceId(2,-1));
//公告
添加新的navDrawerItems(navMenuTitles[3],navMenuIcons.getResourceId(3,-1),true,
总计(”http://192.168.0.23/api/android/announcement/);
//注销
add(新的NavDrawerItem(navMenuTitles[4],navMenuIcons.getResourceId(4,-1));
//回收类型化数组
navMenuIcons.recycle();
//设置事件
setOnItemClickListener(新的SlideMenuClickListener());
//设置导航抽屉列表适配器
适配器=新的NavDroperListAdapter(getApplicationContext(),
纳维特姆斯);
mDrawerList.setAdapter(适配器);
//启用操作栏应用程序图标并将其作为切换按钮
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
mDrawerToggle=新操作BarDrawerToggle(此,mDrawerLayout,
R.string.app_名称,
R.string.app\u名称
){
公共无效onDrawerClosed(视图){
getSupportActionBar().setTitle(mTitle);
//调用onPrepareOptions菜单()以显示操作栏图标
无效操作菜单();
}
打开图纸上的公共空白(视图抽屉视图){
getSupportActionBar().setTitle(mDrawerTitle);
//mDrawerList.bringToFront();
//mDrawerLayout.requestLayout();
//调用onPrepareOptions菜单()隐藏操作栏图标
无效操作菜单();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
如果(savedInstanceState==null){
//第一个导航项目的首次显示视图
显示视图(0);
}
}
私有void显示视图(内部位置){
//通过替换片段更新主要内容
android.app.Fragment Fragment=null;
开关(位置){
案例0:
fragment=新的HomeFragment();
打破
案例1:
片段=新的ProfilFragment();
打破
案例2:
fragment=新ProspekFragment();
打破
案例3:
fragment=新的AnnouncementFragment();
打破
案例4:
注销();
打破
违约:
打破
}
if(片段!=null){
android.app.FragmentManager FragmentManager=getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.container,fragment).commit();
//更新所选项目和标题,然后关闭抽屉
mDrawerList.setItemChecked(位置,true);
mDrawerList.setSelection(职位);
setTitle(导航工具[位置]);
mDrawerLayout.closeDrawer(mDrawerList);
}否则{
//创建片段时出错
Log.e(“滑动菜单”,“创建片段时出错”);
}
}
我想在索引2处隐藏导航抽屉菜单项。怎么做

更新
我的导航抽屉中有5个菜单项,我想在调用某个事件时隐藏其中一个。

您可以通过以下代码删除listview的第二项:

navDrawerItems.remove(2);
((BaseAdapter)adapter).notifyDataSetChanged();

隐藏/显示导航项目

NavDrawerListAdapter中进行如下更改:

public class MyListAdapter extends BaseAdapter {

    Context context;
    ArrayList<ItemListModel> listMenuItem;
    ArrayList<ItemListModel> listMenuItem1;
    int hideViewIndex = -1;

    public MyListAdapter(Context context, ArrayList<ItemListModel> listMenuItem) {
        this.context = context;
        this.listMenuItem = listMenuItem;
        listMenuItem1=new ArrayList<ItemListModel>(listMenuItem);
    }

    @Override
    public int getCount() {
        return listMenuItem.size();
    }

    @Override
    public Object getItem(int position) {
        return listMenuItem.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    private class ViewHolder
    {
        private ImageView imgLogo;
        private TextView txtItemName;
    }

    public void hideView(int pos)
    {
        listMenuItem.remove(pos);
        notifyDataSetChanged();
    }

    public void showView(int pos)
    {
        listMenuItem.add(pos, listMenuItem1.get(pos));
        notifyDataSetChanged();
    }

    @SuppressLint("InflateParams")
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        ViewHolder viewHolder = null;
        if(convertView == null)
        {
            LayoutInflater myLayoutInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
            convertView = myLayoutInflater.inflate(R.layout.activity_item_list, null);
            viewHolder = new ViewHolder();
            viewHolder.imgLogo = (ImageView) convertView.findViewById(R.id.imgLogo);
            viewHolder.txtItemName = (TextView) convertView.findViewById(R.id.txtItemName);
            convertView.setTag(viewHolder);
        }
        else
        {
            viewHolder = (ViewHolder) convertView.getTag();
        }
        ItemListModel itemListModel = listMenuItem.get(position);
        viewHolder.imgLogo.setImageDrawable(itemListModel.getImageLogo());
        viewHolder.txtItemName.setText(itemListModel.getStrItemName());

        return convertView;
    }
adapter.hideView(2);
//adapter.showView(2);

这将作为setInvisibility(GONE)工作:


导航视图导航视图

    mapIntentActivity = getIntent();
    navItemString = mapIntentActivity.getStringExtra("success");

    if(navItemString != null) {

        navigationView = (NavigationView) findViewById(R.id.nav_view);
        Menu nav_Menu = navigationView.getMenu();
        nav_Menu.findItem(R.id.nav_car).setVisible(false);

    }
科特林版本

 val navigationView: NavigationView = findViewById(R.id.nav_view) as NavigationView
 val nav_Menu: Menu = navigationView.getMenu()
 nav_Menu.findItem(R.id.nav_stock).setVisible(false)

您的意思是删除抽屉布局列表视图中的第二项吗?不,只是隐藏它。因为我想在以后再次展示,请您添加更多关于这段代码如何帮助的信息。当您需要在运行时隐藏特定的导航菜单项时,这段代码可以帮助您。示例:当用户登录时。它在导航抽屉中显示配置文件菜单,否则不显示。使用此代码,您可以在导航抽屉中隐藏和显示菜单项。这是第三个项目代码。但是如何使它“消失”而不是“不可见”@kakumanusiakrishna:看看Desmond Yao的答案。它实际上是将其从列表中删除,而不是使其“消失”。但这是通往成功的唯一途径take@Kakumanusivakrishna.setVisible(false)将仅保留项目
    mapIntentActivity = getIntent();
    navItemString = mapIntentActivity.getStringExtra("success");

    if(navItemString != null) {

        navigationView = (NavigationView) findViewById(R.id.nav_view);
        Menu nav_Menu = navigationView.getMenu();
        nav_Menu.findItem(R.id.nav_car).setVisible(false);

    }
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);

Menu menu =navigationView.getMenu();

MenuItem target = menu.findItem(R.id.nav_target);

target.setVisible(false);
    //hide logout menu item when the user is not loggrd in
    //Checking the condition whether the user is logged in or not

    if (!SharedPrefManager.getmInstance(this).isLoggedIn()){
        Menu nav_Menu = navigationView.getMenu();
    nav_Menu.findItem(R.id.nav_logout).setVisible(false);
    }


 //SharedPrefManager .java class where we define the isLoggedIn Method()

import android.content.Context;
import android.content.SharedPreferences;

import com.motortrade.motortrade.t_Model.User;

public class SharedPrefManager {

private static final String SHARED_PREF_NAME = "my_shared_pref";

private  static SharedPrefManager mInstance;
private Context mCtx;

private SharedPrefManager(Context mCtx){
    this.mCtx = mCtx;
}

public static synchronized SharedPrefManager getmInstance(Context mCtx){
    if (mInstance == null){
        mInstance = new SharedPrefManager(mCtx);
    }
    return mInstance;
}

public boolean isLoggedIn(){
    SharedPreferences preferences = mCtx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);

   return preferences.getInt("user_id", -1) != -1;
}
 val navigationView: NavigationView = findViewById(R.id.nav_view) as NavigationView
 val nav_Menu: Menu = navigationView.getMenu()
 nav_Menu.findItem(R.id.nav_stock).setVisible(false)