PopupMenu - 自定义主题

时间:2016-02-25 13:10:51

标签: android android-layout android-styles material android-popupwindow

我想创建自定义PopupMenu(能够更改文本颜色,背景和图标)。理想的行为就像这个gfy(取自Solid Explorer):

https://gfycat.com/JealousMeanHorsefly

enter image description here

你认为它是PopupMenu还是ListPopupWindow?我试图像here那样设置PopupMenu的样式,但我只是设法改变背​​景颜色(哦和阴影消失了)。 如何创建如此美丽的对话框?

3 个答案:

答案 0 :(得分:2)

我认为最好的方法是通过创建自定义对话框然后设置其内容视图来实现它。

          Dialog d = new Dialog(hostActivity,R.style.customOne);
          d.setContentView(yourPopupView);
          d.show();

你需要改变对话框的样式,如下所示

     <style name="customOne" parent="@android:style/Theme.Dialog">
    <item name="android:windowFrame">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowIsFloating">false</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowSoftInputMode">adjustResize</item>
    <item name="android:windowCloseOnTouchOutside">false</item>
    </style>
希望这会有所帮助。

答案 1 :(得分:0)

查看此库:https://github.com/shehabic/Droppy

它允许您创建自定义弹出菜单/下拉菜单。

答案 2 :(得分:0)

<item name="android:popupMenuStyle">@style/MyPopupMenu</item>
<item name="textAppearanceLargePopupMenu">@style/popupText</item>
<item name="textAppearanceSmallPopupMenu">@style/popupTextSmall</item>

在基本主题中添加以上字段。您可以使用以下样式进一步自定义文本。

<style name="popupText" parent="TextAppearance.AppCompat.Light.Widget.PopupMenu.Large">
    <item name="android:textColor">@color/White</item>
</style>

<style name="MyPopupMenu" parent="Widget.AppCompat.PopupMenu">
    <item name="android:popupBackground">@color/popupbackgroundColor</item>
</style>
<style name="popupTextSmall" parent="TextAppearance.AppCompat.Light.Widget.PopupMenu.Small">
    <item name="android:textColor">@color/White</item>
</style>

另请参阅此answer以在弹出窗口中显示图像

您也可以在工具栏中设置PopupTheme。