toolbar的高度问题
学习toolbar,发现toolbar的默认高度有点高,本来以为是个很快就能解决的问题,结果看遍网上各种文章,各种尝试都不成功,于是自己好好研究了下。在此分享下,希望大家都有收获。
【toolbar的高度问题】通过查看android的toolbar style可以得知,toolbar的最小高度是由android:minHeight属性决定的,默认的android:minHeight为
- ?attr/actionBarSize
actionBarSize定义为
- @dimen/abc_action_bar_default_height_material
@dimen/abc_action_bar_default_height_material这个值在不同的value中定义不同
56dp
values-land.xml
48dp
...
问题在于当我在toolbar中设置了minHeight的属性后,发现并没有生效,无论是设置style还是直接设置属性都无效。
经过研究发现,当我们在activity中把toolbar设为actionbar的时候调用了
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
此时的toolbar被设置为了actionbar,同时也就应该默认应用了actionbar的style,于是实验,写了一个toolbar的style继承actionbar的style
- @dimen/toolbar_minHeight
至此,toolbar的高度已经可以控制。同时本人有点强迫症,觉得好好的toolbar为啥要变成actionbar并继承actionbar的style才行,于是我把代码中的设置toolbar为actionbar那句注释了,并把toolbar的style改为继承默认的toolbar style,结果表明是有效的。
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
//setSupportActionBar(toolbar);
- @style/ToolbarText
- @dimen/toolbar_minHeight
到目前为止,基本搞清了Toolbar的默认高度设置问题。
但是新的问题又出现了,当我把toolbar的layout_Height设为wrap_content,且minHeight的值比较小的时候,发现toolbar的title与顶部有空隙,向下偏移了一个位置,然后我在toolbar中设置了各种padding=0,margin=0,android:titleMargin=0,但依然无效,最后都以为是字体的偏移引起的。
文章图片
修改前,顶部有空隙.png
后来在查看toolbar的默认style时,发现了Toolbar设置的titleMargin并没有带android
- @style/TextAppearance.Widget.AppCompat.Toolbar.Title
- @style/TextAppearance.Widget.AppCompat.Toolbar.Subtitle
- ?attr/actionBarSize
- 4dp
- @dimen/abc_action_bar_default_height_material
- top
- ?attr/homeAsUpIndicator
- @string/abc_toolbar_collapse_description
- 16dp
- @dimen/abc_action_bar_content_inset_with_nav
- @dimen/abc_action_bar_default_padding_start_material
- @dimen/abc_action_bar_default_padding_end_material
- @style/ToolbarText
- @dimen/toolbar_minHeight
- 0dp
文章图片
修改后,问题解决.png
然后尝试设置titleMargin=0,结果显示正常了。这个问题也算花费了我较多的时间,目前为止,已经完美解决。本人只尝试了toolbar的style,相信actionbar的style也是类似。
总结:还是看看默认的style设置的属性能给我们更多的启发。toolbar的其他属性也能通过类似的方式进行挖掘。
推荐阅读
- OAK应用案例|【开源】使用PhenoCV-WeedCam进行更智能、更精确的杂草管理
- 定制手表有什么门槛吗()
- #新年觉醒Day2#程序员的思维修炼(第2章|#新年觉醒Day2#程序员的思维修炼:第2章 从新手到专家的历程)
- 朋友的定义
- 黎大小姐的招风耳
- DeepLearning入门笔记(二),用TensorFlow实现简单的CNN跑MNIST数据集
- 20150130
- 亲历《猎场》传销,我能做的只有这些了
- 竞相开花的金融科技何时结果(CB-Insights给出了这样一份报告)
- 2017-12-13