有没有办法减少Action Bar上的Action Item Icons之间的间距?

ume*_*mar 40 android

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

小智 65

使用自定义android:actionButtonStyle.

<item name="android:actionButtonStyle">@style/ActionButtonStyle</item>
Run Code Online (Sandbox Code Playgroud)

而魔术在这里:

<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>
Run Code Online (Sandbox Code Playgroud)

normaly minWidth设置为56 dip.

  • 要使用旧API,我们还必须设置<item name ="actionButtonStyle"> @ style/ActionButtonStyle </ item> (6认同)
  • 我很困惑在哪里把`<item name ="android:actionButtonStyle"> @ style/ActionButtonStyle </ item>`? (3认同)

ped*_*oca 16

对于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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)


小智 15

感谢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>
Run Code Online (Sandbox Code Playgroud)


Sag*_*hah 10

要使用appCompat支持旧版本,除此之外什么都不需要:

在您的应用程序的appTheme中:

<item name="actionButtonStyle">@style/ActionButtonStyle</item>
Run Code Online (Sandbox Code Playgroud)

并在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>
Run Code Online (Sandbox Code Playgroud)

而已.你完成了.


小智 5

在 appTheme 添加

<item name="actionButtonStyle">@style/CustomActionButtonStyle</item>
Run Code Online (Sandbox Code Playgroud)

然后在 style.xml 中创建此样式

<style name="CustomActionButtonStyle" parent="Widget.AppCompat.ActionButton">
        <item name="android:paddingStart">0dip</item>
        <item name="android:paddingEnd">0dip</item>
    </style>
Run Code Online (Sandbox Code Playgroud)


Boo*_*ger 0

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

<ImageView 
android:layout_marginLeft="-2dp"
Run Code Online (Sandbox Code Playgroud)