我想要减少添加到操作栏的操作项图标之间的间距。我们有什么方法可以做到这一点吗?
我想要减少添加到操作栏的操作项图标之间的间距。我们有什么方法可以做到这一点吗?
使用自定义的android:actionButtonStyle。
<item name="android:actionButtonStyle">@style/ActionButtonStyle</item>
这就是魔法所在:
<style name="ActionButtonStyle" parent="@android:style/Widget.Holo.Light.ActionButton">
<item name="android:minWidth">0dip</item>
<item name="android:paddingLeft">0dip</item>
<item name="android:paddingRight">0dip</item>
</style>
通常情况下,minWidth 被设置为 56 dip。
<item name="android:actionButtonStyle">@style/ActionButtonStyle</item>
,请问应该放在哪里? - blueprintchris对于SDK版本17及以上,您应该使用paddingStart和paddingEnd属性。如果您的minSdkVersion < 17,则必须为每个版本使用不同的样式,例如:
res/values/styles.xml :
<item name="android:actionButtonStyle">@style/ActionButtonStyle</item>
<style name="ActionButtonStyle" parent="@android:style/Widget.Holo.Light.ActionButton">
<item name="android:minWidth">0dip</item>
<item name="android:paddingLeft">0dip</item>
<item name="android:paddingRight">0dip</item>
</style>
res/values-v17/styles.xml :
<item name="android:actionButtonStyle">@style/ActionButtonStyle</item>
<style name="ActionButtonStyle" parent="@android:style/Widget.Holo.Light.ActionButton">
<item name="android:minWidth">0dip</item>
<item name="android:paddingStart">0dip</item>
<item name="android:paddingEnd">0dip</item>
</style>
res/values/styles.xml
文件中一次添加了<item name="android:actionButtonStyle">@style/ActionButtonStyle</item>
,并将其放置在我的<style name="AppTheme" parent="Theme.AppCompat.Light">
元素内。然后在两个styles.xml
文件中都加入了<style name="ActionButtonStyle"...
版本。Android将根据平台版本选择正确的@style/ActionButtonStyle
定义。 - Ferran Maylinch<item name="actionButtonStyle">@style/ActionButtonStyle</item>
(在默认的 styles.xml
中)和 <style name="ActionButtonStyle" parent="Widget.AppCompat.ActionButton">
(在 styles.xml
中,包括默认和 v17 版本)。请参见此答案。 - Ferran Maylinch感谢Shai的提示,这对我非常有用(在一个Android 4.0.x设备上): (我的整个style.xml)
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<!--
Base application theme, dependent on API level. This theme is replaced
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="android:Theme.Light">
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
<item name="android:actionButtonStyle">@style/ActionButtonStyle</item>
</style>
<style name="ActionButtonStyle" parent="@android:style/Widget.Holo.Light.ActionButton">
<item name="android:minWidth">0dip</item>
<item name="android:paddingLeft">0dip</item>
<item name="android:paddingRight">0dip</item>
</style>
如果要支持旧版本使用appCompat,您只需要做如下操作:
在您的应用程序的appTheme中:
<item name="actionButtonStyle">@style/ActionButtonStyle</item>
并在 style.xml 中创建一个样式
<!--this will reduce space between actionBar Icons-->
<style name="ActionButtonStyle" parent="Widget.AppCompat.ActionButton">
<item name="android:minWidth">0dip</item>
<item name="android:maxWidth">50dip</item>
<item name="android:paddingLeft">0dip</item>
<item name="android:paddingRight">0dip</item>
</style>
完成了,你做到了。
res/values-v17/styles.xml
版本,并按照pedroca的答案建议设置了paddingStart
和paddingEnd
。 - Ferran Maylinch<item name="actionButtonStyle">@style/CustomActionButtonStyle</item>
然后在style.xml文件中创建以下样式:
<style name="CustomActionButtonStyle" parent="Widget.AppCompat.ActionButton">
<item name="android:paddingStart">0dip</item>
<item name="android:paddingEnd">0dip</item>
</style>
我认为你会发现,如果不采用极端的hackish方法或者创建自己的自定义ActionBar,这将是难以实现的。在这里看看一个非常相似的问题。我自己进行了一些测试,覆盖了android:actionButtonStyle,虽然我能够覆盖某些东西(比如背景),但它拒绝遵守我指定的任何填充属性。