【问题标题】:Android PopupMenu set gravity as CENTER does not workAndroid PopupMenu 将重力设置为 CENTER 不起作用
【发布时间】:2017-11-09 03:47:12
【问题描述】:

我试过这段代码。 并且还尝试了 CENTER_HORIZONTAL 和 CENTER_VERTICAL。 锚点仍然在视图的左侧

val menu = PopupMenu(this, view, Gravity.CENTER)
menu.inflate (R.menu.menu_avatar_2)
menu.show()

【问题讨论】:

标签: android popupmenu


【解决方案1】:

您无法使用默认的PopupMenu 来控制它,并且 PopupMenu(this, view, Gravity.CENTER) 仅将PopuMenu 的重心设置在anchorView 的右侧。

如果您真的想在文本中添加重力,这里有适合您的选项:

1:使用PopupWindow

PopupWindow popupWindow = new PopupWindow(MainActivity.this);
popupWindow.setContentView(yourCustomView); // customview with list of textviews (with gravity inside)
popupWindow.showAsDropDown(anchorView); // display below the anchorview

2:使用ListPopupWindow

String[] products = {"Camera", "Laptop", "Watch", "Smartphone",
                        "Television", "Car", "Motor", "Shoes", "Clothes"};
ListPopupWindow listPopupWindow = new ListPopupWindow(MainActivity.this);
listPopupWindow.setAnchorView(view);
listPopupWindow.setDropDownGravity(Gravity.RIGHT);
listPopupWindow.setHeight(ListPopupWindow.WRAP_CONTENT);
listPopupWindow.setWidth(300);
listPopupWindow.setAdapter(new ArrayAdapter(MainActivity.this,
                            R.layout.list_item, products)); // list_item is your textView with gravity.
listPopupWindow.show();

【讨论】:

    【解决方案2】:

    很难将 PopupMenu 或 PopupWindow 与锚点完美居中对齐,因为它的位置部分取决于文本标签的长度。但是您可以更改水平和垂直偏移量以使其更加集中:

    styles.xml:

    <style name="PopupMenuMoreCentralized" parent="@style/Widget.AppCompat.PopupMenu">
        <item name="android:dropDownHorizontalOffset">4dp</item>
        <item name="android:dropDownVerticalOffset">-6dp</item>
    </style>
    

    Java 代码:

    new PopupMenu(context, anchor, Gravity.CENTER, 0, R.style.PopupMenuMoreCentralized)
    

    MenuPopupHelper menuPopupHelper = new MenuPopupHelper(context,
            (MenuBuilder) popupMenu.getMenu(),
            anchor,
            false,
            0,
            R.style.PopupMenuMoreCentralized);
    

    来源:Implement pop up Menu with margin

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-30
      • 2011-10-28
      • 1970-01-01
      • 2013-09-01
      • 2017-02-02
      • 2012-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多