您的位置:首页 > 其它

ActionBar与ViewPager结合使用

2014-07-23 16:36 375 查看
http://blog.csdn.net/lllkey/article/details/11529129


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_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() // 显示标题栏


二. 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: