【问题标题】:Reduce space between menu items减少菜单项之间的空间
【发布时间】:2018-08-24 17:26:10
【问题描述】:

我有以下菜单:

<menu xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">


    <item
        android:title="@string/search_title"
        android:id="@+id/action_search_music"
        android:icon="@drawable/ic_add_final"

        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="ifRoom|collapseActionView" />

    <item
        android:id="@+id/more_options"
        android:title="Rename playlist"
        android:orderInCategory="101"
        app:showAsAction="always"
        android:icon="@drawable/ic_more_vert_black_24dp">

        <menu >
            <item android:id="@+id/rename_playlist"
                android:title="Rename playlist"
                >
            </item>
            <item android:id = "@+id/action_delete_playlist"
                android:title="Delete playlist"/>

        </menu>
    </item>
</menu>

现在,我无法缩小两个菜单项之间的很大空间。有什么想法可以减少这个空间吗?

编辑:这里的答案:https://stackoverflow.com/a/10085862/6427401 对我不起作用

【问题讨论】:

标签: android


【解决方案1】:

将此添加到您的应用主题中。

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

ActionButtonStyle 在哪里

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

【讨论】:

    【解决方案2】:

    首先我建议你看看你的图标图像,也许它们有一些透明的填充。 此外,您还可以使用 Activity onPrepareOptionsMenu(final Menu menu) 函数来操作菜单。

    例如,您可以对图标进行更改:

    @Override
    public boolean onPrepareOptionsMenu(final Menu menu) {
        final MenuItem menuItem = menu.getItem(position);
        Drawable icon = menuItem.getIcon();
        menuItem.setIcon(doSomething(icon));
        return super.onPrepareOptionsMenu(menu);
    }
    

    或者,您可以使用自定义 actionViewClass,在 XML 中或如下所示:

    menuItem.setActionView(yourView);
    

    【讨论】:

    • 对不起,但我不明白你的代码如何减少空间......图标明智 - 图标来自 Android Studio 中的“图像资产/矢量资产”菜单,所以我不认为他们有一个透明的填充或类似的东西
    • 我的代码没有改变大小,只是建议您可以在哪里操作和更改菜单项。我建议你使用 Layout Inspector,它可以告诉你很多关于空间来自哪里的信息。
    【解决方案3】:

    在你的styles.xml中添加下一行

    <item name="listPreferredItemPaddingLeft">5dp</item> 
    

    【讨论】:

    • 如果您遇到任何问题(关于此),请告诉我谢谢
    【解决方案4】:

    在您的项目dimens.xml 中添加这一行:

     <dimen name="design_navigation_separator_vertical_padding">0dp</dimen>
    

    【讨论】:

      【解决方案5】:

      尝试为您的操作栏制作自定义视图。首先创建make custom_actionbar.xml(layout)。

          ActionBar mActionBar = getSupportActionBar();
          mActionBar.setDisplayShowHomeEnabled(false);
          mActionBar.setDisplayShowTitleEnabled(false);
          LayoutInflater mInflater = LayoutInflater.from(this);
      
          View mCustomView = mInflater.inflate(R.layout.custom_actionbar, null);
                 // Bind view like this
                 // TextView mTitleTextView = (TextView) mCustomView.findViewById(R.id.title_text);
                  //mTitleTextView.setText("My Own Title");
      
          mActionBar.setCustomView(mCustomView);
          mActionBar.setDisplayShowCustomEnabled(true);
      

      注意 :- 使用 Toolbar 可以使自定义更容易。

      希望有帮助。

      【讨论】:

        【解决方案6】:

        我已经尝试了所有问题,但并非每个答案都能解决我的问题。 这帮助我解决了我的问题。

        首先,转到 styles.xml 文件并在下面添加标签内

        <style name="NavigationTheme" parent="AppTheme">
            <item name="android:textSize">16sp</item>
            <item name="android:layout_marginBottom">-5dp</item> </style>
        

        接下来,将下面的代码放入您的 XML 类(在我的例子中是 activity_main.xml)部分。

        android:theme="@style/NavigationTheme"
        

        如下图所示

        【讨论】:

          【解决方案7】:

          对我来说,我想减小项目的宽度。就是这个组合:

          <style name="ActionButton" parent="@android:style/Widget.ActionButton">
              <item name="android:drawablePadding">5dp</item>
              <item name="android:minWidth">0dip</item>
          </style>
          

          【讨论】: