【问题标题】:Styling ListPopupWindow widget样式化 ListPopupWindow 小部件
【发布时间】:2014-06-17 14:48:23
【问题描述】:

我有一个 android 应用程序,当用户单击视图元素时,我会在其中创建一个 ListPopupWindow。 ListPopupWindow 小部件是使用全息黑色的默认主题创建的。

 final ListAdapter adapter = new ArrayAdapter<ChoiceListItem>(context,
                android.R.layout.select_dialog_item, choices);
 final ListPopupWindow listPopupWindow = new ListPopupWindow(context);
 // ...   
 listPopupWindow.setAdapter(adapter);

如何更改 ListPopupWindow 颜色以使用例如全息光甚至自定义颜色的文本、项目背景和项目之间的分隔符?

最好,我正在寻找使用 XML 文件的解决方案(即我应该如何编辑我的主题和样式文件)。

【问题讨论】:

    标签: android android-widget android-styles


    【解决方案1】:

    您应该为您的应用主题定义listPopupWindowStyle

    <style name="AppTheme" parent="...">
        <item name="android:listPopupWindowStyle">@style/MyListPopupWindow</item>
    </style>
    
    <style name="MyListPopupWindow">
        <!-- attributes you want go here -->
    </style>
    

    【讨论】:

    • 我已经尝试了您的建议。 MyListPopupWindow 包含 '​​#fff' 并且在我的 AndroidManifest.xml 的 android:theme 中使用了 AppTheme 样式。不幸的是,这个定义对绘制的弹出窗口没有影响。
    • 我成功地让它工作了。首先,我通过使用带有四个参数的构造函数将样式 MyListPopWindow 应用到我的 ListPopWindow,最后一个是 MyListPopupWindow 的资源 id。其次,我使用&lt;item name="android:popupBackground"&gt;#xxxxxx&lt;/item&gt;改变背景颜色。
    【解决方案2】:

    另一种我认为非常简单的方法是使用颜色创建可绘制对象并将其设置为背景。

    bg_popup_menu.xml

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@color/bg_work_item_menu"/>
    </selector>
    

    listPopupWindow.setBackgroundDrawable(
         context.getResources().getDrawable(R.drawable.bg_popup_menu));
    

    希望对某人有所帮助。

    【讨论】:

      【解决方案3】:

      对于背景,您可以使用 colorBackground:

      <item name="android:colorBackground">@color/your_color</item>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-23
        • 2016-01-17
        • 1970-01-01
        • 1970-01-01
        • 2021-08-13
        相关资源
        最近更新 更多