在前面已经把RecyclerView和SQLite数据库搞定了,现在就是把它们组合起来,应该不难吧?(立个flag)
首先,应该完成往数据库里插入数据,没有插入数据哪里有读取数据呢?因此新建立个activity用来操作数据库插入数据,这里有一个问题,如果插入数据,是要插入数量的,写好数量之后,是不是要列一个表出来,代表要进行的plan,因此完成键放到最上面,然后新开一个list,或者是说原来就有一个list,然后里面的item为0,就是这样,等到用户输入数量的时候,就进行改动,增加或者减少,用一个结构存储着用户之前写入的数据,就是这样,完美。
然后遇到的第一个难题是:如何往toolbar上添加一个按钮?因此,是时候要把toolbar整个的弄懂一遍了。。。
首先,这里有一个问题:什么是toolbar?什么是actionbar?什么是tittlebar?
简单说来,toolbar是actionbar的进阶,因为actionbar有严重的碎片化的问题,而toolbar是2015年Material Design风格的控件,自定义视图更加简单,状态栏的颜色可调。
一句话,用toolbar就好了。而且一般现在as创建的app也是自带toolbar的。但是在设置toolbar的时候,注意要使用noactionbar的主题,不然会崩溃。
这里值得注意的是,需要在activity里设置一下setsupportactionbar函数,这样才会显示tittle,这个tittle是manifest里的activity里的tittle,但是字体是黑色的,而不是白色的,应该是app theme的事情,只要改改属性就好了,而且在kt文件里修改就好了,这里会最终覆盖,用settittletextcolor函数实现。
然后又出现问题了,如何获取color xml里的颜色值呢?一开始我想当然的以为填上R.color.xxx就完事,其实不行,查看一下提示,它说要用getResource().getColor(R.color.xxx),好吧,我用,然后又是报错,说根本没有getResource函数。。。上网一查,发现是需要context.resources.getColor(...),这时候我才想起来我好像在Java里是用的第一种方法,也就是说:as在kotlin里还在用Java的提示?
天哪。。
好在,这回的确显示白色了,但是,它顶部的通知栏跟toolbar的颜色不一致咋办?对,的确有这个问题只不过我一直没有说而已:
怎么办呢?还是上网查一下。。。说要添加一个android:fitsSystemWindows="true",AppBarLayout设置app:elevation="0dp" 否则toolbar与statusbar之间有分隔线,这里是说要造一个沉浸式状态栏,,,,然后网上的我也看不懂,就说说为什么mainactivity就会不一样呢?它们的style样式也是一样的,然后它是专门造了一个xml来存放toolbar,同时存放float button,大概是这个xml的优先级比较高吧,但是它用了一个android.support.design.widget.AppBarLayout的东西进行了包裹,我也试试看。
不行,,上网查看了一下appbarlayout是什么鬼,其实它是一种支持相应滚动手势的app bar布局,与融合通知栏的功能相差十万八千里。
话说为什么mainactivity里要加上一个这个?
另外,既然是能创建沉浸式状态栏,为何不就用沉浸式?好看还遮丑。。。
先看看什么是fitsSystemWindows:
布尔内部属性,用于根据系统窗口(如状态栏)调整视图布局。如果为true,则调整此视图的填充以为系统窗口留出空间。 仅在此视图处于非嵌入式活动时才会生效。
嗯,看不懂,不过不妨碍我制造沉浸式状态栏,就先到这里吧。