老师请问下 attr文件
来源:4-6 主界面底部导航栏封装-1
慕用1394343
2019-03-30
我今天去搜了下 创建一个.xml文件 然后定义里面的属性
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="toolbarTitleColor" format="color" />
<attr name="toolbarMenuIconColor" format="color" />
<attr name="toolbarTitleSize" format="dimension" />
</resources>
然后在style 中赋值
<!--初始化自己定义的3个属性值-->
<item name="toolbarTitleSize">@dimen/font_18</item>
<item name="toolbarTitleColor">@color/white_alpha_224</item>
<item name="toolbarMenuIconColor">@color/white_alpha_224</item>
然后 在某个地方通过 ?attr/toolbarTitleColor 调用是吗? 但是我不知到这样有什么便利的吗?
为什么要通过?attr…这样去调用 而不直接在需要用到的地方定义某个具体值呢?
第2个问题 这个就是老师项目中的ids.xml文件
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!--Toolbar的默认id名-->
<item name="toolbar" type="id" />
<!--recycler封装的tag属性-->
<item name="tag_recycler_holder" type="id" />
<!--默认头像的drawable名字-->
<item name="default_portrait" type="drawable" />
</resources>
这儿的 <item name="toolbar" type="id" />
我看在老师封装的ToolbarActivity中用到了 .
@Override
protected void initWidget() {
super.initWidget();
initToolbar((Toolbar) findViewById(R.id.toolbar));
}
这儿的R.id.toolbar没有指定是哪个具体toolbar 的 id值呀 怎么就可以这么用呢?
2回答
-
其实两个问题都是一个答案。
我们直接说:ToolbarActivity,这个类不用说肯定是一个基类,而不是最终使用的子类。
一般在多module的情况下基类会放到基础的module中进行维护,实际项目的实现类在app module下存放。
那么此时会有一个问题:我想要在基类中使用控件该如何办?
比如上面的toolbar;我们肯定希望在基类中获取到toolbar并且通过获取的控件设置他的行为,这样可以避免子类重复的去做重复的事情;但是这个控件肯定是放到app module下布局的,也就是说我们的base module肯定是不知道这个控件具体的初始化的。
在这样的情况下我们就引入了:ids.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <!--Toolbar的默认id名--> <item name="toolbar" type="id" /> <!--recycler封装的tag属性--> <item name="tag_recycler_holder" type="id" /> <!--默认头像的drawable名字--> <item name="default_portrait" type="drawable" /> </resources>
这个文件放到 base module下,这个文件发挥了什么作用?
这个文件定义了基础的资源id;虽然资源并没有,但是id已经有了,在编译时已经在R文件中生成了一份资源id;此时我们直接使用这个资源id去获取资源肯定会出现错误,无法找到资源;但是这并不妨碍我们使用。
所以我们加上了ids后,我们就可以在base module中使用这个id资源了;那么这个资源肯定是无法获取到的,我们的项目是如何解决的呢;这个也简单,我们在app module下的界面布局中写上一个Toolbar控件,命名id的时候我们依然使用:toolbar;此时在编译层面自动的这里的toolbar id值就等于base module中的id值。
既然id值一样,那么我们在base module中获取这个控件就成为了可能。
多谢购买课程哦~祝学习愉快。
012019-04-01 -
Qiujuer
2019-03-31
我得用电脑看看 手机的看代码不行
00
相似问题
回答 2
回答 3