线上服务咨询
ActionBarSherlock框架
发表时间:2019-07-30 16:32:29
文章来源:沈阳软件开发
标签:网站建设 小程序开发 小程序制作 微信小程序开发 公众号开发 微信公众号开发 网页设计 网站优化 网站排名 网站设计 微信小程序设计 小程序定制 微信小程序定制
浏览次数:0
每个人都知道Android的ActionBar只能在3.0以上,所以低于3.0,google不提供支持3.0以下ActionBar的软件包,但外国大奶JakeWharton在3.0以下实现ActionBar,JakeWharton Big Dan是ActionBarSherlock,Android-ViewPagerIndicator, NineOldAndroids的作者,一个非常强大的人,Github的注意力超过2.6K,我的左链接有他的Github主页链接,感兴趣的朋友可以关注Next,今天我们正在使用他的开源框架ActionBarSherlock,ActionBarSherlock是让Action Bar函数支持2.X之后的所有平台,并且他会自动确定是否调用本机Action Bar或使用扩展的ActionBar,许多着名的应用程序也使用这个库,之前我不知道ActionBar,所以我去了ActionBarSherlock可以很好地理解ActionBar的使用
让我们先从Github下载这个库,下载地址https://github.com/JakeWharton/ActionBarSherlock,下载它以了解压力,如图所示
%20
Xmlns:%20tools='http://schemas.android.com/tools'
Android:%20layout_width='match_parent'
Android:%20layout_height='match_parent'
Android:%20background='@%20android:%20color/white'>%20
Android:%20id='@%20+%20id/viewPager'
Android:%20layout_width='fill_parent'
Android:%20layout_height='wrap_content'/>%20
的RelativeLayout>%20
2.MainActivity代码,单击ActionBar的Tab,ViewPager切换不同的Fragment,滑动ViewPager,选择相应的ActiionBar%20Tab%20
[java]查看plaincopyprint?%20
Packagecom.example.viewpagerandtabdemo;%20
importjava.util.ArrayList;%20
importjava.util.List;%20
Importandroid.os.Bundle;%20
importandroid.support.v4.app.Fragment;%20
importandroid.support.v4.app.FragmentTransaction;%20
importandroid.support.v4.view.ViewPager;%20
importandroid.support.v4.view.ViewPager.OnPageChangeListener;%20
importcom.actionbarsherlock.app.ActionBar;%20
importcom.actionbarsherlock.app.ActionBar.Tab;%20
importcom.actionbarsherlock.app.SherlockFragmentActivity;%20
publicclassMainActivityextendsSherlockFragmentActivityimplementsActionBar.TabListener,OnPageChangeListener%20{
/**%20
*顶部标题标题
*/
privateString%20[]%20mTabTitles;%20
/**%20
*参考ViewPager对象
*/
privateViewPagermViewPager;%20
/**%20
*加载Fragment容器,我们的每个接口都是Fragment%20
*/
privateListmFragmentList;%20
/**%20
*参考ActionBar对象
*/
privateActionBarmActionBar;%20
@override%20
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);%20
的setContentView(R.layout.activity_main);%20
//从资源文件中获取选项卡的标题
mTabTitles=getResources()getStringArray(R.array.tab_title);%20
mFragmentList=newArrayList();%20
mViewPager=(ViewPager)findViewById(R.id.viewPager);%20
//设置适配器
mViewPager.setAdapter(newTabPagerAdapter(getSupportFragmentManager(),mFragmentList));%20
//设置监听器
mViewPager.setOnPageChangeListener(本);%20
//获取我们使用getSupportActionBar()方法的Action实例
mActionBar=getSupportActionBar();%20
//隐藏标题
mActionBar.setDisplayShowTitleEnabled(假);%20
//隐藏Homelogo%20
mActionBar.setDisplayShowHomeEnabled(假);%20
//将ActionBar的导航模式设置为Tab%20
mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);%20
//将一个Tab添加到ActionBar并设置TabListener%20
对于(INTI=0;%20I;>%20
ActionBar.Tabtab=mActionBar.newTab();%20
tab.setText(mTabTitles%20[I]);%20
tab.setTabListener(本);%20
mActionBar.addTab(选项卡,I);%20
}%20
//将片段添加到列表中并将Tab的标题传递给片段
对于(INTI=0;%20I;取代;>%20
Fragmentfragment=newItemFragment();%20
Bundleargs=newBundle();%20
args.putString(%20'ARG',mTabTitles%20[I]);%20
fragment.setArguments(参数);%20
mFragmentList.add(片段);%20
}%20
}%20
@override%20
publicvoidonTabSelected(Tabtab,FragmentTransactionft){
//单击ActionBarTab%20
时切换到不同的Fragment界面mViewPager.setCurrentItem(tab.getPosition());%20
}%20
@override%20
publicvoidonTabUnselected(Tabtab,FragmentTransactionft){
}%20
@override%20
publicvoidonTabReselected(Tabtab,FragmentTransactionft){
}%20
@override%20
publicvoidonPageScrollStateChanged(intarg0){
}%20
@override%20
publicvoidonPageScrolled(intarg0,floatarg1,intarg2){
}%20
@override%20
publicvoidonPageSelected(intarg0){
//滑动ViewPager时,将相应的ActionBarTab设置为
mActionBar.setSelectedNavigationItem(为arg0);%20
}%20
}%20
;取代;>%20
当我们使用ActionBarSherlock时,我们不再继承Activity,而是继承SherlockActivity,SherlockDialogFragment,SherlockFragmentActivity等。我在这里使用Fragment,所以我继承了SherlockFragmentActivity,我们不能只设置Activity的主题,我们将直接在全屏设置android稍后显示。%20theme='@%20android:%20style/Theme.Black.NoTitleBar',我们无法使用ActionBar设置它,我们无法随便设置他的主题,它必须是Theme.Sherlock,Theme.Sherlock.Light,Theme%20.Sherlock.Light%20.DarkActionBar,或者它们的子类,否则会抛出java.lang.IllegalStateException,所以为了自定义ActionBar的Tab,我们必须修改它的样式
注意:我们还必须删除ViewPagerAndTab工程libs下面的android-support-v4.jar包,因为在ActionBarSherlock已经包含android-support-v4.jar
3.ViewPager适配器TabPagerAdapter,因为我们使用Fragment,所以我们继承了FragmentStatePagerAdapter而不是PagerAdapter%20
[java]查看plaincopyprint?%20
Packagecom.example.viewpagerandtabdemo;%20
importjava.util.List;%20
importandroid.support.v4.app.Fragment;%20
importandroid.support.v4.app.FragmentManager;%20
importandroid.support.v4.app.FragmentStatePagerAdapter;%20
publicclassTabPagerAdapterextendsFragmentStatePagerAdapter%20{
privateListlist;%20
//构造函数
publicTabPagerAdapter(FragmentManagerfm,Listlist){
超级(FM);%20
This.list=列表;%20
}%20
@override%20
publicFragmentgetItem(intarg0){
Returnlist.get(为arg0);%20
}%20
@override%20
publicintgetCount(){
Returnlist.size();%20}%20
}%20
4.ItemFragment继承了SherlockFragment,也可以直接继承Fragment。内部布局相对简单。%20TextView用于显示从Activity传递的ActionBar%20Tab的标题。
[java]查看plaincopyprint?%20
Packagecom.example.viewpagerandtabdemo;%20
Importandroid.os.Bundle;%20
importandroid.view.LayoutInflater;%20
Importandroid.view.View;%20
importandroid.view.ViewGroup;%20
importandroid.widget.TextView;%20
importcom.actionbarsherlock.app.SherlockFragment;%20
publicclassItemFragmentextendsSherlockFragment%20{
@override%20
publicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,
BundlesavedInstanceState){
ViewcontextView=inflater.inflate(R.layout.fragment_item,容器,FALSE);%20
TextViewmTextView=(TextView的)contextView.findViewById(R.id.textview);%20
//获取Activity传递的参数
BundlemBundle=getArguments();%20
Stringtitle=mBundle.getString(%20'ARG');%20
mTextView.setText(标题);%20
returncontextView;%20
}%20
@override%20
publicvoidonActivityCreated(BundlesavedInstanceState){
super.onActivityCreated(savedInstanceState);%20
}%20
}%20
然后我们将上面Activity的主题设置为android:%20theme='@style/Theme.Sherlock.Light.DarkActionBar'运行项目看效果,下图是项目的效果,图2是效果网易
%20
这是一个很大的区别吗?人们下面的酒吧是红色的,我们正在制作蓝色,选中Tab的人的字体颜色是红色的,我们的颜色不会变色等等,那么我们怎样才能制作网易新闻的效果,我们需要改变它的风格,改变如下
[html]查看plaincopyprint?%20
@%20nullitem>%20
45dipitem>%20
@风格/Widget.Sherlock.ActionBar.TabTextitem>%20
@风格/Widget.Sherlock.ActionBar.TabViewitem>%20
@风格/Widget.Slider.ActionBaritem>%20
样式和GT;%20
@绘制/base_action_bar_bgitem>%20
样式和GT;%20
@绘制/selector_tabtextitem>%20
15spitem>%20
样式和GT;%20
@绘制/tab_indicatoritem>%20
8dipitem>%20
8dipitem>%20
样式和GT;%20
有一些图片,选择器我没有发布,你可以下载代码看效果,改变样式运行效果
%20
好的,今天的解释在这里结束了。如果您有任何疑问,请在下面留言。如果您有兴趣,可以查看开源框架ViewPageIndicator和ViewPager模仿网易新闻客户端Tab标签
源代码下载,请点击
许多朋友说他们对如何设置4.1的风格没有影响。首先,这个库在2.X机器上使用ActionBar。在3.0之后,它使用了Andriod附带的ActionBar,因此3.0系统中使用的样式是android。样式,所以我们必须修改样式文件如下
[html]查看plaincopyprint?
@ nullitem>
@ nullitem>
45dipitem>
45dipitem>
@风格/Widget.Sherlock.ActionBar.TabTextitem>
@风格/Widget.Sherlock.ActionBar.TabTextitem>
@风格/Widget.Sherlock.ActionBar.TabViewitem>
@风格/Widget.Sherlock.ActionBar.TabViewitem>
@风格/Widget.Slider.ActionBaritem>
@风格/Widget.Slider.ActionBaritem>
样式和GT;
@绘制/base_action_bar_bgitem>
@绘制/base_action_bar_bgitem>
样式和GT;
@绘制/selector_tabtextitem>
15spitem>
样式和GT;
@绘制/tab_indicatoritem>
8dipitem>
8dipitem>
样式和GT;
标签:& nbsp& nbsp沈阳app开发&营销类型网站建设& nbsp沈阳App Design& ActionBarSherlock框架网站建设,小程序开发,小程序制作,微信小程序开发,公众号开发,微信公众号开发,网页设计,网站优化,网站排名,网站设计,微信小程序设计,小程序定制,微信小程序定制