应用程序兼容主题的弹出菜单分隔符

Lea*_*ays 4 android popupmenu

我使用了 app compat theme style 。

  <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="android:popupMenuStyle">@style/PopupMenu</item>
        <item name="android:itemTextAppearance">@style/myCustomMenuTextApearance</item>
        <item name="android:listPopupWindowStyle">@style/PopupMenuStyle</item>

    </style>
    <style name="PopupMenuStyle" parent="Widget.AppCompat.ListPopupWindow">
        <item name="android:divider">@drawable/devider</item>
        <item name="android:dividerHeight">2dp</item>
    </style>

    <style name="PopupMenu" parent="@android:style/Widget.PopupMenu">
        <item name="android:popupBackground">@color/search_panel_color</item>
        <item name="android:textColor">@color/activity_button_text_color</item>
        <item name="android:shadowColor">@color/activity_theam_color</item>


    </style>

    <style name="myCustomMenuTextApearance" parent="@android:style/TextAppearance.Widget.TextView.PopupMenu">
        <item name="android:textColor">@color/activity_theam_color</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

我想在我的菜单项中添加一个分隔符。我尝试了很多东西,但分隔线不适用......有没有办法显示分隔线?

小智 6

我也有同样的问题。解决方法是这样的:

<style name="PopupMenuListView" parent="@style/Widget.AppCompat.ListView.DropDown">
    <item name="android:divider">#000000</item>
    <item name="android:dividerHeight">1dp</item>
</style>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">   
  <item name="android:dropDownListViewStyle">@style/PopupMenuListView</item>
</style>
Run Code Online (Sandbox Code Playgroud)

您也可以参考以下链接: 如何在特定菜单项之间添加分隔线?


Vas*_*ant 2

我有一个解决方案。您可以通过编程根据您的选择设计弹出窗口。使用下面的代码来显示弹出菜单。

private ListPopupWindow listPopupWindow;
listPopupWindow = new ListPopupWindow(getApplicationContext());
listPopupWindow.setWidth(400);
listPopupWindow.setDropDownGravity(Gravity.CENTER);
listPopupWindow.setAdapter(new listpopupadapter(a, type));
listPopupWindow.setAnchorView(v);
listPopupWindow.show();
Run Code Online (Sandbox Code Playgroud)

这里 listpopupadapter 是用于设计列表的类,如下所示。

public class listpopupadapter extends BaseAdapter {
    ArrayList<String> a;
    String type;

    public listpopupadapter(ArrayList<String> a, String type) {
        this.a = a;
        this.type = type;
    }

    @Override
    public int getCount() {
        return a.size();
    }

    @Override
    public Object getItem(int position) {
        return getItem(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @SuppressLint("ViewHolder")
    @Override
    public View getView(final int position, View convertView,
            ViewGroup parent) {
        // TODO Auto-generated method stub
        View root = LayoutInflater.from(parent.getContext()).inflate(
                R.layout.raw_filter, null);
    }
}
Run Code Online (Sandbox Code Playgroud)