尝试用kotlin做一个app(十六)

继续优化一下可折叠的toolbar。目前的效果是这样

这里有几个问题:

1.我这里是设置了一下状态栏的颜色,但是要设置状态栏透明。设置状态栏透明之后,其实是actionbar会与状态栏重合,而toolbar并不会。所以要在activity中设置setSupportActionBar(Toolbar),让toolbar act as actionbar

2.toolbar和状态栏重合问题,按照之前的方法应该设置toolbar具有一个与状态栏高度的paddingTop,但是这里有个更简单的方法,即在根局部使用android:fitsSystemWindows="true"

3.我希望toolbar固定住,不要滚动,那只需要在toolbar布局添加app:layout_collapseMode="pin"

4.现在要给toolbar添加一些文字,图片

设置控件的android:layout_gravity="right"没有问题,但是android:layout_gravity="center"就出问题,主要外面包裹了collapseToolbarLayout之后,就不行了。比如单独的toolbar布局显示

放到collapseToolbarLayout中就变这样

那需要设置collapseToolbarLayout属性app:titleEnabled="false"

目前效果

这里还有一个问题,collapseToolbarLayout滑动完,状态栏又不透明了。这是因为我既设置了setSupportActionBar(Toolbar),又设置了android:fitsSystemWindows="true",还设置了app:layout_collapseMode="pin",貌似这三个有什么冲突。那我去掉setSupportActionBar(Toolbar)和android:fitsSystemWindows="true",然后设置toolbar的paddingTop吧还是

再做一个效果,滚动到上面去的时候,改变一下toolbar上控件的颜色,从白色完全透明到完全不透明,这个可以设置监听AppBarLayout偏移量

        appbar.addOnOffsetChangedListener(object :AppBarLayout.OnOffsetChangedListener{
            override fun onOffsetChanged(appbarLayout: AppBarLayout?, verticalOffset: Int) {
                println("偏移$verticalOffset")
                println("范围${appbarLayout?.totalScrollRange}")
            }

        })

这里面用到两个参数appbarLayout?.totalScrollRange,滚动范围和verticalOffset偏移量,这个是个负数,所以要取它的绝对值

var scrollRange=appbarLayout!!.totalScrollRange
var scale:Float=255f/scrollRange
var transparentValue=(abs(verticalOffset)*scale).toInt()
var hexString:String?=Integer.toHexString(transparentValue)

 if(transparentValue<16)
  {
       hexString="0"+hexString
   }
   var colorString="#"+hexString+"ffffff"
   toolbar.setBackgroundColor(Color.parseColor(colorString))

还有toolbar文字,图片按钮颜色的变化也可以采用同样的方法。。

给collapseToolbarLayout加背景图片,给布局加背景图片,默认是会拉伸的。别人的博客也有关于设置图片不拉伸的方法,但是我想要的是实现background,像src,scaleType centerCrop的效果,应该会很麻烦。暂时就把背景图片裁剪为合适的大小好了。另外,背景图上使用白色的文字,最好给背景图加点灰色,让白色文字看起来更清晰些。有个backgroundTintMode属性可用

之前有个地方弄错了,NestedScrollView不应该放在AppBarLayout里面,而应该放在外面。如果放在里面那就滚动不了了。可以把不跟着RecyclerView滚动的导航条目放在AppBarLayout内容...另外coordinatorlayout的高度设置match_parent可能会出现页面显示不全的问题。

其他的一些布局之前做过了。这里不写了

参考

CoordinatorLayout与滚动的处理

Using the App Toolbar

CollapsingToolbarLayout 中的Toolbar Title 居中

CoordinatorLayout实现工具栏及页面头部的伸缩与折叠

原文地址:https://www.cnblogs.com/vocus/p/12558045.html

时间: 2024-10-08 21:43:26

尝试用kotlin做一个app(十六)的相关文章

尝试用kotlin做一个app(六)

还是关于JSP后台管理系统的,有几个问题要解决一下 使用虚拟路径访问本地图片 之前在kindeditor编辑框插入图片时,是把图片文件转换为base64编码的形式:还有一种方法是使用虚拟地址.另外图片在数据库中存储的时候,应该是存储图片的虚拟地址(当然也可以是图片的二进制流数据). 可以参考 idea设置tomcat虚拟路径的两种方法 配置好了之后,就得把图片的路径上传到数据库中,更新表t_hp_new的thumb字段 后台登录状态验证 这里先不做,因为程序还在调试,每次进入要登录也是很麻烦了.

尝试用kotlin做一个app(八)

点击新闻列表进入详情页 使用WebView 1.准备工作 现在没有办法把整个网站前端都做出来,就先做一个新闻页面吧.新闻页面也要连接数据库,要使用之前写后台的JDBC类,所以我想可以在原来项目中增加一个“子项目”.那就要调整一下原来项目的结构. 调整后的项目结构是这样的 以下是遇到的问题和解决方法 idea项目重命名 如果出现错误javax.management.InstanceNotFoundException: Catalina:type=Server,查看artifacts下的是否还保留了

尝试用kotlin做一个app(五)

JSP后台管理系统 开发工具是IntelliJ IDEA+tomcat+mysql5.6.19+mysql-connector-java-5.1.48.jar+easyui+kindeditor 之前也有记录一些Servlet基础(java,idea) 这篇我只把一些重要的记录一下 easyui官方文档 kindeditor官方文档 easyui很简单,而且中文文档介绍得很详细,对照文档做就好了 kindeditor问题比较多,这里记录一下 准备工作 mysql数据库test中建立t_hp_ne

尝试用kotlin做一个app(十一)

为新闻列表页加载数据库数据,并为条目添加点击事件,点击进入新闻详情页 又转战后台了 java文章,kotlin文章还有其他文章是用一个表,还是分别建不同的表呢,我想还是建一个表吧,为表增加一个分类的字段就行了.文章一共有10个类别,分别是: 新建两个表.一个是文章表,一个是用户表.两个表包含的字段信息如下 数据库表也是有命名规范的,但是我这暂时不用处理很复杂的表,所以命名直白点就好.文章应该有作者,又要通过文章的作者查询到作者的头像,所以应该有一次联合查询. create table artic

尝试用kotlin做一个app(三)

新闻列表 添加新闻列表可以使用RecyclerView.但是有个问题,RecyclerView只会在内部滚动,不会带动整个屏幕滚动.所以在原根布局外层添加androidx.core.widget.NestedScrollView,并且在原先根局部,添加android:descendantFocusability,解决进入页面跳入页面底部的问题. ·添加RecyclerView <androidx.recyclerview.widget.RecyclerView android:id="@+

做一个App究竟要花多少钱?

作为互联网从业者,被外行的朋友们问及最多的问题是: “做一个网站需要多少钱?”或者“做一个APP需要多少钱?”. 作为做过完整网站项目和APP的人,今天从产品经理的角度,一起来算一下中小型APP从无到有需要做哪些工作,以及为达成使命,需要付出多少金钱代价. 以下内容的前提是: 深圳.移动互联网方向.包含研发一个新产品过程中一些常见的工作,并非十全十美. 首先假设在做APP之前我们已经有了一个成熟的团队(这是非常幸运的前提,很多产品研发进度极其缓慢的原因之一就是在过程中不断在招人),团队的结构以架

做一个 App 前需要考虑的几件事

做一个 App 前需要考虑的几件事 来源:limboy的博客 随着工具链的完善,语言的升级以及各种优质教程的涌现,做一个 App 的成本也越来越低了.尽管如此,有些事情最好前期就做起来,避免当 App 有了一定规模后,再感慨当初为什么没有多留点心. 完善的日志系统 以 iOS 为例,有时图方便,就直接用 NSLog 了,甚至线上都一直开着.一方面会影响性能,尤其是输出比较频繁的时候,另一方面也容易泄露敏感信息,所以一般做法是在 Release 模式下禁用 NSLog,比如在 pch 文件中,通过

做一个App前需要考虑的几件事

本文转载于文章原文链接,版本归原作者所有! 随着工具链的完善,语言的升级以及各种优质教程的涌现,做一个 App 的成本也越来越低了.尽管如此,有些事情最好前期就做起来,避免当 App 有了一定规模后,再感慨当初为什么没有多留点心. 此处由标哥的技术博客站长点评: 看完本篇文章之后,也让我想起了不少以前做过的蠢事,做过很多重复的工作.之前在项目中使用过cocoalumberjack,个人感觉是很不错的日志管理框架.当然,不一定要求使用它,也在另一家公司里,原来的人将NSLog重定义了,改写了输出,

3分钟制作一个APP,六款国际热门互联网产品

1.Appstar(应用之星) 手机里有那么多款APP,有没有想过自己做一个? 不懂设计,更不会编程,怎么办?在appstar(中文:应用之星),仅需简单几步操作,你就可以免费制作一款满足个性化需求的啊app,并且分享给更多人一起使用.强大的在线应用开发平台,定制电子书.音乐.淘宝.相册等APP.在这里,创意被不断实现. 2.Seed|iOS/Android "国外的现在就是国内的未来",想要了解未来,为什么不吸收一首的国外资讯?Seed 是专为高质量内容阅读者打造的原版内容聚合平台,