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条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Hadoop3单机部署,实现最简伪集群
- MySQL数据库在高并发下的优化方案