-
-
Notifications
You must be signed in to change notification settings - Fork 151
文本,图标,指示器宽度属性生效说明
angcyo edited this page Jul 6, 2023
·
1 revision
当配置了文本
图标
相关属性时:
<!--item选中时 文本的颜色-->
<attr name="tab_select_color" format="color" />
<!--item未选中时 文本的颜色-->
<attr name="tab_deselect_color" format="color" />
<!--选中时 图标(Drawable)的颜色, 默认是文本的颜色-->
<attr name="tab_ico_select_color" format="color" />
<!--未选中时 图标(Drawable)的颜色, 默认是文本的颜色-->
<attr name="tab_ico_deselect_color" format="color" />
为了使属性生效, 库需要定位item
childView
中的 TextView
ImageView
.
如果配置了id
属性, 则优先使用id
定位对应需要的控件:
<!--指定文本控件的id, 所有文本属性改变, 将会发生在这个控件上, 如果指定的控件不存在, 控件会降权至[ItemView]-->
<attr name="tab_text_view_id" format="reference" />
<!--指定图标控件的id, 同上-->
<attr name="tab_icon_view_id" format="reference" />
如果未指定, 则降级为, 在com.angcyo.tablayout.DslTabLayout.LayoutParams
属性中的:
<!--单独指定child的锚点索引-->
<attr name="layout_tab_indicator_content_index" format="integer" />
<!--单独指定child的锚点控件的id-->
<attr name="layout_tab_indicator_content_id" format="reference" />
这2个属性中获取.
如果这2个属性, 依旧未匹配到, 则再次降级为判断当前的childView
是否就是TextView
或ImageView
.
如果还是没有匹配到对应的控件, 则属性不会生效.
如果不想再xml
中配置, 则可以通过代码控制, 实现2个关键方法即可:
com.angcyo.tablayout.DslTabLayout#configTabLayoutConfig
configTabLayoutConfig {
onGetTextStyleView = { itemView, _ ->
}
onGetIcoStyleView = { itemView, _ ->
}
}
指示器
的宽度属性取值如下:
可以是固定的dp大小, 这个无可厚非.
<!--指示器的宽度-->
<attr name="tab_indicator_width" format="dimension|flags">
<flag name="WRAP_CONTENT" value="-2" />
<flag name="MATCH_PARENT" value="-1" />
</attr>
当指示器
的宽度是WRAP_CONTENT
或MATCH_PARENT
时, 那么就需要找到匹配的锚点View
, 才能生效.
当指定了以下2个属性之一时, 那么会优先使用对应的view
作为指示器的锚点View
, 否则降级为childView
.
<!--单独指定child的锚点索引-->
<attr name="layout_tab_indicator_content_index" format="integer" />
<!--单独指定child的锚点控件的id-->
<attr name="layout_tab_indicator_content_id" format="reference" />
注意tab_indicator_ignore_child_padding
属性可以在计算指示器WRAP_CONTENT
时,忽略view
的padding
值, 但是margin
值依旧有效.