正如标题所说,我在MenuItem上使用setActionView进行设置,布局如下:
<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
我如何才能做到这一点?
发布于 2016-07-10 02:06:36
我今天遇到了类似的问题,因此找不到任何好的QA。因此我做了一些研究。以下是我在这个问题上的发现:
安卓菜单的实现方式如下:
如果您已将actionView膨胀为:
自定义视图图标(optional)
(可选,或者可以通过将其设置为“”)设置为可选
不设置图标,将标题设置为"“,并设置actionView使menuItem显示为只包含使用setActionView放大的自定义视图,然后:

安卓强制自定义视图的宽度为wrap_content,其余区域由icon+title of menuItem占用。
我们可以将此实现想象为:


将ParentLinearLayout之后的整个视图视为LinearLayout1和LinearLayout2 (在上图中分别描绘为布局1和布局2)
现在LinearLayout1有width=0dp和weight=1,LinearLayout2有width=wrap_content
因此,无论我们设置什么,目前我们都不能在菜单中右对齐膨胀的自定义视图(动作视图)。
为了在技术上准确,如果你真的需要这样做,你可以通过查看Android导航菜单的内部实现代码来右对齐。但并不是真的值得你这么做。任何功能都是所需时间与结果之间的权衡。
发布于 2014-04-04 23:10:51
您应该在RelativeLayout中尝试使用android:gravity="center"。
发布于 2014-04-04 23:21:46
尝试此android:layout_gravity="center"
https://stackoverflow.com/questions/22866378
复制相似问题