Android设置toolbar高度,toolbar的高度问题

本文探讨了在Android开发中遇到的Toolbar高度调整问题。作者详细解析了Toolbar的默认高度来源,通过研究style和属性设置,找到了如何有效改变Toolbar高度的方法。在设置minHeight属性后,发现只有在将Toolbar设为actionBar时样式才生效。通过创建继承自actionBar的style解决了问题。此外,还解决了在设置wrap_content和较小minHeight时title顶部出现空隙的bug,通过调整titleMargin实现正常显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习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

android:id="@+id/toolbar"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:background="?attr/colorPrimary"

style="@style/ToolbarStyle"

/>

至此,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,但依然无效,最后都以为是字体的偏移引起的。

7cb8b82f479a?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

修改前,顶部有空隙.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

7cb8b82f479a?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

修改后,问题解决.png

然后尝试设置titleMargin=0,结果显示正常了。这个问题也算花费了我较多的时间,目前为止,已经完美解决。本人只尝试了toolbar的style,相信actionbar的style也是类似。

总结:还是看看默认的style设置的属性能给我们更多的启发。toolbar的其他属性也能通过类似的方式进行挖掘。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值