Android标题栏随着滑动显示隐藏
这次实现标题栏随着上滑下滑显示隐藏
实现这个效果需要,Support Design库中的CoordinatorLayout和AppBarLayout进行配合才行。
dependencies { ... implementation 'com.android.support:design:27.1.1' //必须添加 implementation 'com.android.support:cardview-v7:27.1.1' implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.22' }
xml布局代码
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.Toolbar android:layout_width="match_parent" app:title="我是标题" app:titleTextColor="#fff" android:id="@+id/toolbar" app:layout_scrollFlags="scroll|enterAlways" //这个属性实现随着页面滚动标题栏(toolbar)显示隐藏 android:background="@color/colorPrimary" app:navigationIcon="@drawable/ic_back" android:layout_height="50dp"> </android.support.v7.widget.Toolbar> </android.support.design.widget.AppBarLayout> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:id="@+id/recycle" app:layout_behavior="@string/appbar_scrolling_view_behavior"//这个属性只有在布局是CoordinatorLayout 时才有,是让让控件在AppBarLayout之下的 android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView> </android.support.design.widget.CoordinatorLayout>
Activity代码
public class MainActivity extends AppCompatActivity { Toolbar toolbar; RecyclerView recyclerView; private BaseQuickAdapter<String, BaseViewHolder> baseQuickAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toolbar=findViewById(R.id.toolbar); recyclerView=findViewById(R.id.recycle); setSupportActionBar(toolbar); recyclerView.setLayoutManager(new LinearLayoutManager(this)); final ArrayList<String> strings = new ArrayList<>(); for(int x=0;x<10;x++){ strings.add("我是条目"+x); } baseQuickAdapter = new BaseQuickAdapter<String, BaseViewHolder>(R.layout.item, strings) { @Override protected void convert(BaseViewHolder helper, String item) { helper.setText(R.id.tv_title, item); } }; baseQuickAdapter.openLoadAnimation(BaseQuickAdapter.SLIDEIN_LEFT); // baseQuickAdapter.isFirstOnly(false); baseQuickAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() { @Override public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { } }); recyclerView.setAdapter(baseQuickAdapter); } }
还需要在主题中将标题去掉
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="windowActionBar">false</item> //去掉ActionBar <item name="windowNoTitle">true</item> //去掉标题 </style>
扩展一:将Toolbar换成ImageView和TabLayout实现图片显示隐藏
xml布局代码
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <ImageView android:layout_width="match_parent" android:src="@mipmap/bg" android:scaleType="fitXY" app:layout_scrollFlags="scroll|exitUntilCollapsed" //将layout_scrollFlags属性加在ImageView上 android:layout_height="200dp" /> <android.support.design.widget.TabLayout android:layout_width="match_parent" android:background="#fff" app:tabMode="fixed" app:tabGravity="fill" android:layout_height="wrap_content"> <android.support.design.widget.TabItem android:layout_width="wrap_content" android:text="分组一" android:layout_height="wrap_content" /> <android.support.design.widget.TabItem android:layout_width="wrap_content" android:text="分组二" android:layout_height="wrap_content" /> <android.support.design.widget.TabItem android:layout_width="wrap_content" android:text="分组三" android:layout_height="wrap_content" /> </android.support.design.widget.TabLayout> </android.support.design.widget.AppBarLayout> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:id="@+id/recycle" app:layout_behavior="@string/appbar_scrolling_view_behavior" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView> </android.support.design.widget.CoordinatorLayout>
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
ionic和cordova初探--从安装到运行首个app
好多人说ionic好用,一直要推荐我用,我就不信了,来安装玩一下试试效果。实践出真知!安装过程各种坑,工具太多了,太麻烦了,差点放弃(还好坚持下来呢)。 1.安装node 许多前端工具的安装都依赖于node的包管理器npm,Node官网: https://nodejs.org/ 安装完成后在cmd中输入 npm -v 回车。 查看版本号如图: 查看版本号 2.安卓环境 JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html JDK需要配置两个环境变量:(如果已配置就无需再配置) PATH:%JAVA_HOME%\bin CLASSPATH:.;%JAVA_HOME%\lib\tools.jar (一定不要忘了前面的点) 配置完成后,cmd中输入java -version 查看版本号。 3.安装安卓的SDK 打开Android Studio,File --> Settings --> 搜索sdk,找到对应的sdk进行安装即可。 需要在Path环境变量...
- 下一篇
Android中的设计模式之状态模式
参考 《设计模式:可复用面向对象软件的基础 》5.8 State 状态 对象行为型模式 《Android源码设计模式解析与实战》第7章 随遇而安--状态模式 意图 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 别名 状态对象(Objects for States) 适用场景 一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。 一个操作中含有庞大的多分支的条件语句,且这些操作分支包含这一相同的状态。这个状态通常用一个或多个枚举常量表示。 状态模式将每一个条件分支放入到一个独立的类中,这使得你可以根据对象自身的情况将对象状态作为一个对象,这一对象可以不依赖于其它对象而独立变化,这样可以通过多态来去除多的,重复的if-else等分支语句。 结构 结构 Context 环境类,定义客户需要的接口,维护一个State子类的实例,这个实例定义了当前环境的状态。 State 抽象状态类或者状态接口,定义一个或者一组接口,便是该状态下的行为。 ConcreteStateA,ConcreteStateB 具体状态类,每一个具体的状态类实现抽象State中...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS7设置SWAP分区,小内存服务器的救世主
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- 2048小游戏-低调大师作品