如何创建由较低版本的android支持的导航抽屉?我写了这个代码,但它只适用于大于4.1的版本 [英] how to create Navigation Drawer that is supported by lower version of android?i have write write this code but it works only in version greater than 4.1

查看:76
本文介绍了如何创建由较低版本的android支持的导航抽屉?我写了这个代码,但它只适用于大于4.1的版本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

public class SwappingClassDashboard extends Activity {

DrawerLayout dl;

ListView列表;

ActionBarDrawerToggle toogle;



CharSequence标题,dtitle;



String [] acfservice;

MainActivity mainactivity;



@Override

protected void onCreate(Bundle savedInstanceState){



ActionBar actionbar = getActionBar( );

ColorDrawable colorDrawable = new ColorDrawable(

Color.parseColor(#0067b4));

actionbar.setBackgroundDrawable(colorDrawable);

super.onCreate(savedInstanceState);

setContentView(R.layout.swapping_layout);



//初始化用于登录的用户名和密码字段的值

mainactivity = new MainActivity();



//变量赋值结束

title = dtitle = getTitle();

acfservice = getResource s()。getStringArray(R.array.acf_array);

dl =(DrawerLayout)findViewById(R.id.drawer_layout);

list =(ListView)findViewById( R.id.listview);



//设置一个自定义阴影,当抽屉

//打开时,它会覆盖主要内容/>
dl.setDrawerShadow(R.drawable.drawer_shadow,Gravity.START);

//用项目设置抽屉列表视图并点击监听器

list.setAdapter(new ArrayAdapter< string>(this,R.layout.list_drawer,

acfservice));

list.setOnItemClickListener(new DrawerItemClickListener());



//启用ActionBar应用程序图标,表现为切换导航抽屉的动作

ActionBar actionbar1 = getActionBar();

actionbar1.setIcon(R.drawable.acf);

actionbar1.setTitle(ACFNepal);

actionbar1.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE

| ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_HOME_AS_UP);



// ActionBarDrawerToggle将滑动抽屉和动作栏应用程序图标之间的正确交互联系在一起

//

toogle = new ActionBarDrawerToggle(this,/ * host Activity * /

dl,/ * DrawerLayout对象* /

R.drawable.click ,/ *导航抽屉图像替换'向上'插入符* /

R.string.onopen,/ *打开抽屉描述无障碍* /

R.string .onclose / *关闭抽屉描述无障碍* /

){



public void onDrawerClosed(查看视图){

getActionBar()。setTitle(title);

invalidateOptionsMenu(); //创建调用

// onPrepareOptionsMenu()

}



public void onDrawerOpened(查看drawerView) {

getActionBar()。setTitle(dtitle);

invalidateOptionsMenu(); //创建调用

// onPrepareOptionsMenu()

}



};

dl.setDrawerListener(toogle);



if(savedInstanceState == null){

selectItem(0);

}

}



@Override

public boolean onCreateOptionsMenu(菜单菜单){

MenuInflater inflater = getMenuInflater();

inflater.inflate(R.menu.mainmenu,menu);

返回super.onCreateOptionsMenu(菜单) ;

}



/ *只要我们调用invalidateOptionsMenu()* /

@Override

public boolean onPrepareOptionsMenu(菜单菜单){

//如果导航抽屉打开,则隐藏与内容相关的操作项

// view

boolean drawerOpen = dl.isDrawerOpen(list);

menu.findItem(R.id.user)。setVisible(!drawerOpen);

/ / menu.findItem(R.id.setting)。setVisible(!drawerOpen);

// menu.findItem(R.id.back)。setVisible(!drawerOpen);



返回super.onPrepareOptionsMenu(menu); < br $>
}



@Override

public boolean onOptionsItemSelected(MenuItem item){



if(toogle.onOptionsItemSelected(item)){

返回true;

}

//处理动作按钮

开关(item.getItemId()){



案例R.id.sign_out:{

startActivity(new Intent(SwappingClassDashboard.this,

MainActivity.class));



android.os.Process.killProcess(android.os .Process.myPid());



}

休息;

案例R.id.exit: {

final Dialog d1 = new Dialog(this);

d1.requestWindowFeature(Window.FEATURE_LEFT_ICON);

d1.setTitle(Do你想退出申请表吗?);



d1.setContentView(R.layout.dial_exit);

d1.setCancelable(true);

d1.show();



按钮btnyes,btnno;

btnyes =(按钮)d1.findViewById(R.id.exityes);

btnno =(按钮)d1.findViewById(R.id.exitno);

btnyes.setOnClickListener(new View.OnClickListener(){



@Override

public void onClick(查看arg0){

// Intent intent = getIntent();

意图intent = new Intent(Intent.ACTION_MAIN);

intent.addCategory(Intent.CATEGORY_HOME);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);



startActivity(意图);



intent.setClass(getApplicationContext(),

StartACFActivity.class);

startActivity(intent);

d1.dismiss() ;



完成();

android.os.Process.killProcess(android.os.Process.myPid());



}

});

btnno.setOnClickListener(new View.OnClickListener(){



@Override

public void onClick(查看arg0){



d1.dismiss();



}

});



}

休息;



默认:

返回super.onOptionsItemSelected(item);

}

返回false;



}



/ *导航抽屉中ListView的点击列表器* /

私有类DrawerItemClickListener实现

ListView.OnItemClickListener {

@Override

public void onItemClick(AdapterView long id){

selectItem(position);

}

}



private void selectItem(int position){

// update替换片段的主要内容

Fragment fragment = null;

switch(position){

案例0:

fragment = new Dashboard();

break;

//案例1:

// fragment = new SystemUsers();

//休息;



案例1:

startActivity(new Intent(SwappingClassDashboard.this,

AssessmentCard.class));

break;



//案例3:

// startActivity(new Intent(SwappingClassDashboard.this,

// DisplayChildList.class));

// break;



案例2:

startActivity(新的Intent(SwappingClassDashboard.this,

SyncDatabase。 class));



休息;

默认:

休息;

}

if(fragment!= null){

FragmentManager fragmentManager = getFragmentManager();

fragmentManager.beginTransaction()

.replace(R.id.content_frame,fragment).commit();



//更新选择编辑项目和标题,然后关闭抽屉

list.setItemChecked(position,true);

setTitle(acfservice [position]);

dl.closeDrawer(list);

} else {

//创建片段时出错

Log.e(SwappingClassDashboard,error在创作片段);

}

}



@Override

public void onBackPressed(){

Intent nextActivity = new Intent(this,MainActivity.class);

startActivity(nextActivity);

} < br $>


@Override

public void setTitle(CharSequence t){

title = t;

getActionBar()。setTitle(title);

}



@Override

protected void onPostCreate (Bundle savedInstanceState){

super.onPostCreate(savedInstanceState);

//在onRestoreInstanceState发生后同步切换状态。

toogle.syncState ();

} $ / $


@Override

public void onConfigurationChanged(Configuration newConfig){

super.onConfigurationChanged(newConfig);

//将任何配置更改传递给抽屉翻转

toogle.onConfigurationChanged(newConfig);

}

}

public class SwappingClassDashboard extends Activity {
DrawerLayout dl;
ListView list;
ActionBarDrawerToggle toogle;

CharSequence title, dtitle;

String[] acfservice;
MainActivity mainactivity;

@Override
protected void onCreate(Bundle savedInstanceState) {

ActionBar actionbar = getActionBar();
ColorDrawable colorDrawable = new ColorDrawable(
Color.parseColor("#0067b4"));
actionbar.setBackgroundDrawable(colorDrawable);
super.onCreate(savedInstanceState);
setContentView(R.layout.swapping_layout);

// initializing the value for username and passord field for login
mainactivity = new MainActivity();

// end of variable assignment
title = dtitle = getTitle();
acfservice = getResources().getStringArray(R.array.acf_array);
dl = (DrawerLayout) findViewById(R.id.drawer_layout);
list = (ListView) findViewById(R.id.listview);

// set a custom shadow that overlays the main content when the drawer
// opens
dl.setDrawerShadow(R.drawable.drawer_shadow, Gravity.START);
// set up the drawer's list view with items and click listener
list.setAdapter(new ArrayAdapter<string>(this, R.layout.list_drawer,
acfservice));
list.setOnItemClickListener(new DrawerItemClickListener());

// enable ActionBar app icon to behave as action to toggle nav drawer
ActionBar actionbar1 = getActionBar();
actionbar1.setIcon(R.drawable.acf);
actionbar1.setTitle("ACFNepal");
actionbar1.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE
| ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_HOME_AS_UP);

// ActionBarDrawerToggle ties together the the proper interactions
// between the sliding drawer and the action bar app icon
toogle = new ActionBarDrawerToggle(this, /* host Activity */
dl, /* DrawerLayout object */
R.drawable.click, /* nav drawer image to replace 'Up' caret */
R.string.onopen, /* "open drawer" description for accessibility */
R.string.onclose /* "close drawer" description for accessibility */
) {

public void onDrawerClosed(View view) {
getActionBar().setTitle(title);
invalidateOptionsMenu(); // creates call to
// onPrepareOptionsMenu()
}

public void onDrawerOpened(View drawerView) {
getActionBar().setTitle(dtitle);
invalidateOptionsMenu(); // creates call to
// onPrepareOptionsMenu()
}

};
dl.setDrawerListener(toogle);

if (savedInstanceState == null) {
selectItem(0);
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mainmenu, menu);
return super.onCreateOptionsMenu(menu);
}

/* Called whenever we call invalidateOptionsMenu() */
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// If the nav drawer is open, hide action items related to the content
// view
boolean drawerOpen = dl.isDrawerOpen(list);
menu.findItem(R.id.user).setVisible(!drawerOpen);
// menu.findItem(R.id.setting).setVisible(!drawerOpen);
// menu.findItem(R.id.back).setVisible(!drawerOpen);

return super.onPrepareOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

if (toogle.onOptionsItemSelected(item)) {
return true;
}
// Handle action buttons
switch (item.getItemId()) {

case R.id.sign_out: {
startActivity(new Intent(SwappingClassDashboard.this,
MainActivity.class));

android.os.Process.killProcess(android.os.Process.myPid());

}
break;
case R.id.exit: {
final Dialog d1 = new Dialog(this);
d1.requestWindowFeature(Window.FEATURE_LEFT_ICON);
d1.setTitle("Do you want to exit Application ?");

d1.setContentView(R.layout.dial_exit);
d1.setCancelable(true);
d1.show();

Button btnyes, btnno;
btnyes = (Button) d1.findViewById(R.id.exityes);
btnno = (Button) d1.findViewById(R.id.exitno);
btnyes.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View arg0) {
// Intent intent=getIntent();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(intent);

intent.setClass(getApplicationContext(),
StartACFActivity.class);
startActivity(intent);
d1.dismiss();

finish();
android.os.Process.killProcess(android.os.Process.myPid());

}
});
btnno.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View arg0) {

d1.dismiss();

}
});

}
break;

default:
return super.onOptionsItemSelected(item);
}
return false;

}

/* The click listner for ListView in the navigation drawer */
private class DrawerItemClickListener implements
ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView long id) {
selectItem(position);
}
}

private void selectItem(int position) {
// update the main content by replacing fragments
Fragment fragment = null;
switch (position) {
case 0:
fragment = new Dashboard();
break;
// case 1:
// fragment = new SystemUsers();
// break;

case 1:
startActivity(new Intent(SwappingClassDashboard.this,
AssessmentCard.class));
break;

// case 3:
// startActivity(new Intent(SwappingClassDashboard.this,
// DisplayChildList.class));
// break;

case 2:
startActivity(new Intent(SwappingClassDashboard.this,
SyncDatabase.class));

break;
default:
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.content_frame, fragment).commit();

// update selected item and title, then close the drawer
list.setItemChecked(position, true);
setTitle(acfservice[position]);
dl.closeDrawer(list);
} else {
// error in creating fragment
Log.e("SwappingClassDashboard", "error in creation fragment");
}
}

@Override
public void onBackPressed() {
Intent nextActivity = new Intent(this, MainActivity.class);
startActivity(nextActivity);
}

@Override
public void setTitle(CharSequence t) {
title = t;
getActionBar().setTitle(title);
}

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

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

推荐答案

你应该小心你正在使用的导入

它应该是这样的库

you should be careful about the import u are using
it should be the same library like this
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;











Or

import android.app.FragmentManager;





并确保在AndroidManifest.xml中确认





and make sure in AndroidManifest.xml

<uses-sdk>
        android:minSdkVersion="14"
        android:targetSdkVersion="19" />
</uses-sdk>





试试吧



Try it


这篇关于如何创建由较低版本的android支持的导航抽屉?我写了这个代码,但它只适用于大于4.1的版本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆