安卓界面控件滑动置顶

前几天项目需要实现那种控件滑动置顶悬浮的效果,类似于美团网的购买按钮,从网上找到一些解决的办法,基本就是在顶部先写一个一样的置顶控件隐藏,置顶控件滑到顶部时,次控件在显示。但是,项目里面需要滑动的部分下方是两个viewpager,并且通过RadioGroup和RadioButton去实现下方viewpager的左右滑动切换如果采用隐藏显示的方法RadioButton就不好去做判断。经过我不断地寻找,在CSDN上找到了一种解决方法: Android菜单控件置顶悬浮,这种方法在效果上基本可以达到我想要实现的那种效果。可是吧,本人太愚钝,看不懂原作者的代码,在评论区留言求源代码,作者也没有回复,于是又开始了原代码寻找之旅。

经过不懈的努力,终于找到了一个可用的方法,原作者把叫做共同头部+ViewPager+ListView。然后,个人厚颜无耻的在作者的Github把源代码给Download下来了,经过了稍微的修改,整体上已经达到了项目的需求效果。

因为原作者并没有给代码太多的注释,所以我在把源代码Download下来之后还研究了两天的时间,现在把个人研究的成果做一个简短的记录。

首先,第一个遇到的问题是导入的问题,原作者的项目是用AndroidStudio开发的,Android Studio什么都好,就是在导入项目的时候会无缘无故包一大堆的错误,重点还是在build.gradle上,有时候需要删掉build.gradle里面的一些东西,有时候又得改build.gradle里面的一些东西(比如sdk版本之类的)。

源代码你里面viewpage上包括了ListView(AdapterView)、RecyclerView、ScrollView三种child,我需要用到的只有ListView这一种。于是删掉了RecyclerView和ScrollView。而且我的下方viewpag只有两页,起初在项目的myscrolllayout\fragment\base\BasePagerFragment.java里面修改成两个listview的时候,运行查看结果发现中间的标题部分width死活不能math_parent。后来研究了一会com.astuetz.PagerSlidingTabStrip这个类,发现1行处private boolean shouldExpand = false;当时去百度翻译了一下shouldExpand这个词:扩大。好啦就是这个了改成true!顺便的,我还在PagerSlidingTabStrip的PageListener方法里面加入了改变tab颜色的代码,

//被选中的tab字体变色
View v,v1;
if(position==0){
   v = tabsContainer.getChildAt(0);
   v1 = tabsContainer.getChildAt(1);
}else{
   v = tabsContainer.getChildAt(1);
   v1 = tabsContainer.getChildAt(0);
}
if (v instanceofTextView||v1 instanceof TextView){
   TextView tab = (TextView) v;
   tab.setTextColor(tabTextColor2);
   TextView tab2 = (TextView) v1;
   tab2.setTextColor(tabTextColor);
}
其他的地方就没有做太大的改动了,已经达到了项目需求的效果了。

上传的修改过的Demo地址:点击这里

安卓界面控件滑动置顶_第1张图片


 

你可能感兴趣的:(安卓开发)