ActionBar导航(滑动抽屉)
官方的DrawerLayout有严重缺陷,这里只上代码。
public class MainActivity extends ActionBarActivity { private DrawerLayout mDrawerLayout; private ActionBarDrawerToggle mDrawerToggle; private ListView mDrawerList; private CharSequence mTitle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, 0, 0) { /** Called when a drawer has settled in a completely closed state. */ public void onDrawerClosed(View view) { supportInvalidateOptionsMenu(); } /** Called when a drawer has settled in a completely open state. */ public void onDrawerOpened(View drawerView) { supportInvalidateOptionsMenu(); } }; mDrawerLayout.setDrawerListener(mDrawerToggle); getSupportActionBar().setDisplayHomeAsUpEnabled(true); initListView(); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); mDrawerToggle.syncState(); onSectionAttached(0); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); mDrawerToggle.onConfigurationChanged(newConfig); } @Override public boolean onCreateOptionsMenu(Menu menu) { if (!mDrawerLayout.isDrawerOpen(mDrawerList)) { getMenuInflater().inflate(R.menu.main, menu); restoreActionBar(); return true; } return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } private void initListView() { mDrawerList = (ListView) findViewById(R.id.left_drawer); mDrawerList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, getData())); mDrawerList.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // 响应事件 onSectionAttached(position); restoreActionBar(); } }); } private List<String> getData() { List<String> data = new ArrayList<String>(); data.add("菜单1"); data.add("菜单2"); return data; } private void restoreActionBar() { ActionBar actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); actionBar.setDisplayShowTitleEnabled(true); actionBar.setTitle(mTitle); } private void onSectionAttached(int position) { FragmentManager fragmentManager = getSupportFragmentManager(); if (position == 0) { fragmentManager.beginTransaction() .replace(R.id.content_frame, new MyFragmentA()).commit(); mTitle = getString(R.string.a); } else { fragmentManager.beginTransaction() .replace(R.id.content_frame, new MyFragmentB()).commit(); mTitle = getString(R.string.b); } } }activity_main.xml
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/drawer_layout" tools:context="com.example.navigation_mode_drawer.MainActivity" > <!-- The main content view --> <!-- main content must be the first element of DrawerLayout because it will be drawn first and drawer must be on top of it --> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" /> <!-- The navigation drawer --> <ListView android:id="@+id/left_drawer" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="start" android:background="#ccc" android:choiceMode="singleChoice" android:divider="@android:color/transparent" android:dividerHeight="0dp" /> </android.support.v4.widget.DrawerLayout>
Android2.3模拟器效果图
相关推荐
这种模式只能在一项任务的的根activity 中使用,即任何界面都能通过Actionbar触发出drawer式的抽屉导航栏 4.2 item选择 5.不建议使用右侧抽屉来导航,一般用于具体的点击事件。这是遵循导航栏以及触发他的Actionbar...
actionbar+fragment实现顶部导航菜单的功能
关键词:swipeActionbar slidingActionbar tabactionbar 可滑动的actionbar actionbar Tab滑动 这个示例工程,将actionbar上实现tab的动态切换,同时兼容8以上所有平台 项目依赖v7 appcompat 包 请自行添加 有问题 ...
drawerLayout+actionbar拉动抽屉
ActionBar下拉导航+悬浮透明样式,相关博文:http://www.cnblogs.com/tianzhijiexian/p/3873587.html
使用ActionBar+TabPageIndicator+ViewPager+FragmentPagerAdapter的双向滑动Tab
ActionBar用Tab+ViewPager+Fragment实现快速导航,
ANDROID-添加ActionBar导航选项卡PART-2(带有GridView和MultipleSelection) ================== 这是ActionBar导航的示例代码。 更详细的检查这个 达瓦尔·索达·帕玛(Dhaval Sodha Parmar)
android仿微信6.0底部滑动菜单栏+导航栏,ViewPager+RadioGroup+ActionBar. 有博客描述
使用了ActionBar实现层级导航的返回效果,项目中含:源码+效果图+项目结构图 教程地址:http://blog.csdn.net/yangyu20121224/article/details/9059459
ActionBar实现导航下拉列表效果,项目内含:源码+效果图+项目结构图 教程地址:http://blog.csdn.net/yangyu20121224/article/details/9050573
ViewPager实现滑动的Preference页面且带ActionBar
主要为大家详细解析了Android3.0 ActionBar导航标题栏的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
android ActionBarTabs+ViewPager+Fragment 实现tab滑动翻页效果,完整代码,多个例子,
使用actionbar来实现内容的竖向导航,还是比较给力的。
包括2个代码例子,一个是自定义 actionbar 适合用于3.0以下版本也需要使用actionbar。一个例子是 修改actionbar style样式,如果替换背景等。
ActionBar取代了传统的标题栏(title),其在activity位置就是title原有的位置,在activity的顶部。ActionBar上默认情况下包括... ③ 为导航提供下拉列表; ④ 在“action项”位置提供交互式action组件,例如搜索框。
主要为大家详细介绍了Android巧用ActionBar实现tab导航效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
项目源码,里面包括了ActionBar的创建,ActionBar搜索按钮,显示不同的详情页面,给ActionBar添加Tab标签,抽屉布局及开关的开发
android的actionbar开发,以及使用radio button代替Tab