MenuItem actionView对齐

时间:2014-04-04 15:04:08

标签: android android-actionbar

正如标题所说,我在setActionView上使用MenuItem进行设置,这里是布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ProgressBar
        android:layout_width="32dp"
        android:layout_height="32dp"
        android:layout_margin="4dp"
        android:layout_centerInParent="true"/>

</RelativeLayout>

问题是ProgressBar似乎与右边对齐。 (它应该与中心对齐,与MenuItem图标相同。图标为32dp

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:2)

我今天遇到了类似的问题,并且在SO上找不到任何好的质量保证。因此我做了一些研究。以下是我对此事的调查结果:

  

Android菜单以这种方式实现:

如果您将 actionView 夸大了以下内容:

  • 图标(可选)
  • title(可选,或者说可以通过将其设置为“”来使其成为可选项)
  • 自定义视图

并且您没有设置图标,将标题设置为“”并设置actionView以使menuItem看起来只包含您使用setActionView充气的自定义视图,然后:

enter image description here

  

Android强制自定义视图的宽度 wrap_content ,剩余区域被menuItem的图标+标题占用。

我们可以将此实现视为:

enter image description here

enter image description here

将保证金后的整个视图视为 ParentLinearLayout ,它分为 LinearLayout1 LinearLayout2 (如上图所示为布局1和分别布局2)

现在 LinearLayout1 width = 0dp weight = 1 LinearLayout2 width = wrap_content

因此,无论我们设置什么,目前,我们无法在菜单中右对齐膨胀的自定义视图(操作视图)。

  

为了在技术上准确,您可以通过检查Android导航菜单的内部实现代码来确定是否真的需要这样做。但并不值得努力。任何特征都是需要时间与结果的权衡。

答案 1 :(得分:0)

您应该在android:gravity="center"中尝试RelativeLayout

答案 2 :(得分:0)

试试这个android:layout_gravity="center"