1

我有一些示例内容的 PreferenceActivity:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
        <PreferenceCategory
                android:title="First Category"
                android:key="first_category">
                <CheckBoxPreference
                        android:key="perform_updates"
                        android:summary="Enable or disable data updates"
                        android:title="Enable updates"
                        android:defaultValue="true"
                        />
                <ListPreference
                        android:key="updates_interval"
                        android:title="Updates interval"
                        android:summary="Define how often updates will be performed"
                        android:defaultValue="1000"
                        android:entries="@array/updateInterval"
                        android:entryValues="@array/updateIntervalValues"
                        android:dependency="perform_updates"
                        />
        </PreferenceCategory>

        <PreferenceCategory
                android:title="Second Category"
                android:key="second_category">
                <EditTextPreference
                        android:key="welcome_message"
                        android:title="Welcome Message"
                        android:summary="Define the Welcome message to be shown"
                        android:dialogTitle="Welcome Message"
                        android:dialogMessage="Provide a message"
                        android:defaultValue="Default welcome message"/>
        </PreferenceCategory>
</PreferenceScreen>

众所周知,在 4.0 之前的所有 Android 中,它看起来都非常丑陋。现在的想法是创建自定义主题并将其应用于活动。我想让 ListView 如下图所示:

在此处输入图像描述

我可以通过覆盖来调整分隔符(“Personalizacja”、“Informacje [...]”)<item name="listSeparatorTextViewStyle">...但真正的问题是:如何为单独的组创建带有圆角的背景?我无法找到将自定义样式设置为组中第一个/最后一个元素的任何方法。

我会很感激任何想法。但请注意,我只想通过样式和主题来实现它。

顺便提一句。如果您知道如何实现上述目标,但没有圆角 - 也请告诉我!

4

3 回答 3

1

Your limitation to styles & themes only is a very strict constraint, I'm 99% sure this is unachievable, since PreferenceScreen uses its own ListView, which you cannot customize using styles nor themes.

However, you may define android:widgetLayout attribute for every item in your PreferenceScreen, where you will provide different background for different items depending on their position in the group.

Also, Android styles and layouts files, located at android-sdk-windows/platforms/android-xx/data/res/, worth having a look in your case.

于 2012-06-04T16:19:33.177 回答
1

我认为对于一个android ListView 可以达到这个效果。ListView 的主要功能是回收其行条目,以便不必为每个列表条目实例化它们。

诀窍是创建多个列表元素布局并将它们交换到您的 ListAdapter 中。所以你基本上会有组头、组顶部元素、组中间元素和组底部元素的列表条目。总而言之,您的适配器中的 ViewHolder 应该保留 4 个不同的布局“模板”。

下图描述了不同的布局段:

在此处输入图像描述

于 2012-06-08T13:37:42.843 回答
0

您可以在父布局中设置背景颜色,并在列表视图中使用带圆角的背景图像。你可以从下面给出的代码中得到一些

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:orientation="vertical"
        android:background="#your cloue code for main bg"  >

   <ListView
    android:id="@+id/yourid"
    android:background="@drawable/your bg with round corner"
    android:cacheColorHint="#00000000"
    android:layout_width="fill_parent"
    android:layout_marginLeft="8dip"
    android:layout_marginTop="0dip"
    android:layout_marginRight="8dip"
    android:layout_height="wrap_content"
    android:textColor="#000000" >
</ListView>
</LinearLayout>
于 2012-05-26T09:08:53.720 回答