正如标题所说,我在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
我怎样才能做到这一点?
答案 0 :(得分:2)
我今天遇到了类似的问题,并且在SO上找不到任何好的质量保证。因此我做了一些研究。以下是我对此事的调查结果:
Android菜单以这种方式实现:
如果您将 actionView 夸大了以下内容:
并且您没有设置图标,将标题设置为“”并设置actionView以使menuItem看起来只包含您使用setActionView充气的自定义视图,然后:
Android强制自定义视图的宽度为 wrap_content ,剩余区域被menuItem的图标+标题占用。
我们可以将此实现视为:
将保证金后的整个视图视为 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"