ActionBar与ViewPager结合使用
2014-07-23 16:36
375 查看
http://blog.csdn.net/lllkey/article/details/11529129
如果你不想要Action bar,把Activity的主题设置为Theme.Holo.NoActionBar就可以了
[html] view
plaincopy
<activity android:theme="@android:style/Theme.Holo.NoActionBar">
先得到Actionbar对象,再对其进行操作:show()或者hide()
[java] view
plaincopy
ActionBar actionBar = getActionBar();
actionBar.hide();
在隐藏和删除Action bar时,也许回使Activity重新布局。如果不想重新布局可以使用覆盖模式。覆盖模式在Activity的顶部描画操作栏,而不是在它们所拥有的屏幕的区域。这样,布局可以保持不变。要使用覆盖模式,就要给Activity创建一个主题,并且把android:windowActionBarOverlay属性设置为true。
提示:如果你有一个删除了Action bar的Activity主题,它把android:windowActionBar样式属性设置为false。但是,如果你使用了这个主题,创建窗口将不允许Action bar再显示,这时getActionBar()方法将返回null。
actionBar.setDisplayHomeAsUpEnabled(true) // 给左上角图标的左边加上一个返回的图标 。对应ActionBar.DISPLAY_HOME_AS_UP
actionBar.setDisplayShowHomeEnabled(true) //使左上角图标可点击,对应id为android.R.id.home,对应ActionBar.DISPLAY_SHOW_HOME
actionBar.setDisplayShowCustomEnabled(true) // 使自定义的普通View能在title栏显示,即actionBar.setCustomView能起作用,对应ActionBar.DISPLAY_SHOW_CUSTOM
actionBar.setDisplayShowTitleEnabled(true) //对应ActionBar.DISPLAY_SHOW_TITLE
actionBar.hide() // 影藏标题栏
actionBar.show() // 显示标题栏
实例:主Activity:
viewpager的每个页面暂时用android自带的layout代替,可以替换做其他layout
[java] view
plaincopy
public class MainActionBarUnionVp extends Activity implements TabListener,
OnPageChangeListener {
private ActionBar actionBar;
private ViewPager viewPager;
private List<View> viewList;
private MainPageAdapter viewPagerAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.actionbar_unionvp_main);
viewPager = (ViewPager) findViewById(R.id.view_pager);
actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowHomeEnabled(true);
Tab tab = actionBar.newTab().setText("第一页").setTabListener(this);
actionBar.addTab(tab);
tab = actionBar.newTab().setText("第二页").setTabListener(this);
actionBar.addTab(tab);
tab = actionBar.newTab().setText("第三页").setTabListener(this);
actionBar.addTab(tab);
viewList = new ArrayList<View>();
View view1 = (View) View.inflate(this,
android.R.layout.activity_list_item, null);
View view2 = (View) View.inflate(this,
android.R.layout.expandable_list_content, null);
View view3 = (View) View.inflate(this,
android.R.layout.simple_dropdown_item_1line, null);
viewList.add(view1);
viewList.add(view2);
viewList.add(view3);
viewPagerAdapter = new MainPageAdapter();
viewPager.setAdapter(viewPagerAdapter);
viewPager.setCurrentItem(0);
viewPager.setOnPageChangeListener(this);
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageSelected(int arg0) {
actionBar.getTabAt(arg0).select();
}
public class MainPageAdapter extends PagerAdapter {
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view = viewList.get(position);
viewPager.addView(view);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(viewList.get(position));
}
@Override
public int getCount() {
return viewList.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
}
@Override
public void onTabReselected(Tab tab, android.app.FragmentTransaction ft) {
}
@Override
public void onTabSelected(Tab tab, android.app.FragmentTransaction ft) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(Tab tab, android.app.FragmentTransaction ft) {
}
}
layout 文件:actionbar_nuionvp_main.xml
[html] view
plaincopy
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</FrameLayout>
在AndroidManifest里的Activity加上属性android:uiOptions="splitActionBarWhenNarrow"后,普通ActionBar将不再显示在标题栏部分,而是显示在屏幕底部
android:uiOptions="none" 表示不再显示actionBar
1. 在xml中显示活隐藏
如果你不想要Action bar,把Activity的主题设置为Theme.Holo.NoActionBar就可以了[html] view
plaincopy
<activity android:theme="@android:style/Theme.Holo.NoActionBar">
2. 在Activity中显示活隐藏
先得到Actionbar对象,再对其进行操作:show()或者hide()[java] view
plaincopy
ActionBar actionBar = getActionBar();
actionBar.hide();
在隐藏和删除Action bar时,也许回使Activity重新布局。如果不想重新布局可以使用覆盖模式。覆盖模式在Activity的顶部描画操作栏,而不是在它们所拥有的屏幕的区域。这样,布局可以保持不变。要使用覆盖模式,就要给Activity创建一个主题,并且把android:windowActionBarOverlay属性设置为true。
提示:如果你有一个删除了Action bar的Activity主题,它把android:windowActionBar样式属性设置为false。但是,如果你使用了这个主题,创建窗口将不允许Action bar再显示,这时getActionBar()方法将返回null。
3. 其他的一些属性
actionBar.setDisplayHomeAsUpEnabled(true) // 给左上角图标的左边加上一个返回的图标 。对应ActionBar.DISPLAY_HOME_AS_UPactionBar.setDisplayShowHomeEnabled(true) //使左上角图标可点击,对应id为android.R.id.home,对应ActionBar.DISPLAY_SHOW_HOME
actionBar.setDisplayShowCustomEnabled(true) // 使自定义的普通View能在title栏显示,即actionBar.setCustomView能起作用,对应ActionBar.DISPLAY_SHOW_CUSTOM
actionBar.setDisplayShowTitleEnabled(true) //对应ActionBar.DISPLAY_SHOW_TITLE
actionBar.hide() // 影藏标题栏
actionBar.show() // 显示标题栏
二. ActionBar与ViewPager结合使用
实例:主Activity:viewpager的每个页面暂时用android自带的layout代替,可以替换做其他layout
[java] view
plaincopy
public class MainActionBarUnionVp extends Activity implements TabListener,
OnPageChangeListener {
private ActionBar actionBar;
private ViewPager viewPager;
private List<View> viewList;
private MainPageAdapter viewPagerAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.actionbar_unionvp_main);
viewPager = (ViewPager) findViewById(R.id.view_pager);
actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowHomeEnabled(true);
Tab tab = actionBar.newTab().setText("第一页").setTabListener(this);
actionBar.addTab(tab);
tab = actionBar.newTab().setText("第二页").setTabListener(this);
actionBar.addTab(tab);
tab = actionBar.newTab().setText("第三页").setTabListener(this);
actionBar.addTab(tab);
viewList = new ArrayList<View>();
View view1 = (View) View.inflate(this,
android.R.layout.activity_list_item, null);
View view2 = (View) View.inflate(this,
android.R.layout.expandable_list_content, null);
View view3 = (View) View.inflate(this,
android.R.layout.simple_dropdown_item_1line, null);
viewList.add(view1);
viewList.add(view2);
viewList.add(view3);
viewPagerAdapter = new MainPageAdapter();
viewPager.setAdapter(viewPagerAdapter);
viewPager.setCurrentItem(0);
viewPager.setOnPageChangeListener(this);
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageSelected(int arg0) {
actionBar.getTabAt(arg0).select();
}
public class MainPageAdapter extends PagerAdapter {
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view = viewList.get(position);
viewPager.addView(view);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(viewList.get(position));
}
@Override
public int getCount() {
return viewList.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
}
@Override
public void onTabReselected(Tab tab, android.app.FragmentTransaction ft) {
}
@Override
public void onTabSelected(Tab tab, android.app.FragmentTransaction ft) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(Tab tab, android.app.FragmentTransaction ft) {
}
}
layout 文件:actionbar_nuionvp_main.xml
[html] view
plaincopy
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</FrameLayout>
在AndroidManifest里的Activity加上属性android:uiOptions="splitActionBarWhenNarrow"后,普通ActionBar将不再显示在标题栏部分,而是显示在屏幕底部
android:uiOptions="none" 表示不再显示actionBar
相关文章推荐
- ActionBar与ViewPager结合实现“书签导航”
- ActionBar和Fragment结合ViewPager实现TabActivity
- Android第二十一天 整合ActionBar+ViewPager,PagerTabStrip的使用
- Actionbar + tabs + viewpager使用
- ViewPager与ActionBar结合实现导航
- 如何使用ActionBar+ViewPager实现fragment相互切换
- actionbar与viewpager的联合使用(android 3.0 ,level 11以上)
- android4.4 Fragment +ViewPager+actionbar 使用
- Android编程心得-使用ActionBar+Fragment+ViewPager实现动态切换Menu效果
- ActionBar和Fragment结合ViewPager实现TabActivity
- ViewPager+Fragment的结合使用,实现QQ界面的理解
- ActionBar(6) ActionBar+ViewPager 实现可左右滑动的Tab页布局
- ViewPager+Fragment的结合使用,实现QQ界面的理解
- ViewPager+Fragment的结合使用,实现QQ界面的理解
- ViewPager+Fragment的结合使用
- android actionbar viewpager 实现类微信主界面布局
- ViewPager结合Activity的使用及父Activity中调用子Activity的方法
- ViewPager+Fragment的结合使用,实现QQ界面的理解
- ViewPager+Fragment的结合使用,实现QQ界面的理解
- ActionBar +Tab+ViewPager +Fragment 支持侧滑动完成办税工具的页面展示