有没有办法减less操作栏上的操作项目图标之间的间距?

我想减less添加到ActionBar的Action Item图标的间距。 有没有办法可以做到这一点?

使用自定义的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。

感谢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> 

对于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> 

为了支持使用appCompat的旧版本,你只需要这个:

在你的应用程序的appTheme:

 <item name="actionButtonStyle">@style/ActionButtonStyle</item> 

并在style.xml中创build一个样式

  <!--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> 

而已。 你完成了。

在appTheme中添加

 <item name="actionButtonStyle">@style/CustomActionButtonStyle</item> 

然后在style.xml中创build这个样式

 <style name="CustomActionButtonStyle" parent="Widget.AppCompat.ActionButton"> <item name="android:paddingStart">0dip</item> <item name="android:paddingEnd">0dip</item> </style> 

我想你可能会发现,这是很难做到,而不会变得非常黑客或只是创build自己的自定义的ActionBar。 看到这里似乎是一个非常类似的问题。 我做了一些testing自己重写android:actionButtonStyle,而我可以重写某些东西(如背景),它拒绝承认我指定的任何types的填充属性。

没有答案为我工作。 所以我使用层列表将图标包装在可绘制的xml中,并给它一个负的左边距,这对我来说是这样的。

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:left="-20dp"> <bitmap android:src="@drawable/actionbar_logo" android:gravity="left" /> </item> </layer-list> 

如果您要创build自定义的ActionBar,则可以在元素之间添加自定义间距,如果要将项目彼此靠近,则可以对属性使用负值。 像这样的伪代码(在你的布局xml文件中):

 <ImageView android:layout_marginLeft="-2dp"