Java 如何创建导航视图打开条件?
首先,我在android中有两个两边的导航视图,如图所示。左侧为注册为家长的用户,右侧为注册为学费提供者的用户。例如,如果用户A注册为家长,则他/她只能打开左侧导航。我做了一些研究,主要是使用单选按钮/单选组。不幸的是,我必须使用微调器,我应该编写什么代码来确保导航视图可以为某些用户打开。供你参考,我有3项活动 1.Java编码,我有编码初始化,构造函数和getter 2 RegistrationActivity.Java,我将所有微调器编码放在这里Java 如何创建导航视图打开条件?,java,android,Java,Android,首先,我在android中有两个两边的导航视图,如图所示。左侧为注册为家长的用户,右侧为注册为学费提供者的用户。例如,如果用户A注册为家长,则他/她只能打开左侧导航。我做了一些研究,主要是使用单选按钮/单选组。不幸的是,我必须使用微调器,我应该编写什么代码来确保导航视图可以为某些用户打开。供你参考,我有3项活动 1.Java编码,我有编码初始化,构造函数和getter 2 RegistrationActivity.Java,我将所有微调器编码放在这里 //USER TYPE SPINNER
//USER TYPE SPINNER
List<String> categories = new ArrayList<>();
categories.add(0, "Choose Category");
categories.add("Parents");
categories.add("Tuition Provider");
ArrayAdapter<String> dataAdapter;
dataAdapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item, categories);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
RegisterUserType.setAdapter(dataAdapter);
RegisterUserType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
{
if(position==0)
{
//Toast.makeText(getApplicationContext(),"No Item Selected",Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(getApplicationContext(),parent.getItemAtPosition(position) +" Selected",Toast.LENGTH_SHORT).show();
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
我无法将所有代码粘贴到此处,因为它太长了,但我可以通过电子邮件向您发送电子邮件,以便更好地了解我的XML布局。您所要做的就是锁定要禁用的抽屉,如果要启用它,请再次解锁 使用DroperLayout.SetDroperLockMode 在您的情况下,下面的代码将关闭您的一个具有重力启动的抽屉
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.START);
当你想再次解锁时,只需
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.START);
还记得一件事吗
drawerLayout.setDrawerLockMode允许应用程序限制用户打开或关闭给定抽屉的能力。该抽屉无法通过滑动打开,但drawerLayout仍将响应对openDrawer、closeDrawer的调用
因此,在你的情况下,你也会考虑禁用IVIEVIEW点击,因为他们有这些方法
就你而言 当用户单击微调器项时,您将选中ifposition==1 如果这个条件为真,你就知道它是父母 所以在您的Home.Java中执行此操作 这样做 if(parent==true){
//this will disable right drawer
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);
//and this will enable left drawer
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.START);
//and also do to disable right ImageView
menuRight.setEnabled(false);
//and also do to enable left ImageView
menuLeft.setEnabled(true);}
现在,对于学费提供程序,请执行相同的操作,但这次启用右侧,禁用左侧,
菜单按钮也是一样。如何解锁和锁定它?我想要的是,如果用户是家长,则只能打开左侧导航视图。因此,如果用户是家长,则只需锁定右侧导航,以便他们只能打开左侧等一下,我将重写您的代码并更新我的答案,以便您能更好地理解。这只是一个提示。。。您可以声明变量并单击存储位置是否为父项。。。它就像一个布尔值。。。True和False我应该在哪里声明变量?在同一个活动中?
if(parent==true){
//this will disable right drawer
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);
//and this will enable left drawer
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.START);
//and also do to disable right ImageView
menuRight.setEnabled(false);
//and also do to enable left ImageView
menuLeft.setEnabled(true);}