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

スタイルとテーマのみへの制限は非常に厳しい制約です。スタイルやテーマを使用してカスタマイズできないPreferenceScreen独自のを使用しているため、これは達成できないと99%確信しています。ListView

ただし、android:widgetLayoutPreferenceScreenのすべてのアイテムに属性を定義することができます。この場合、グループ内の位置に応じて、アイテムごとに異なる背景を提供します。

また、にあるAndroidのスタイルとレイアウトファイルはandroid-sdk-windows/platforms/android-xx/data/res/、ケースで一見の価値があります。

于 2012-06-04T16:19:33.177 に答える
1

この効果は、AndroidのListViewで実現できると思います。ListViewの主な機能は、行エントリをリサイクルして、リストエントリごとにインスタンス化する必要がないようにすることです。

秘訣は、複数のリスト要素レイアウトを作成し、それらをListAdapaterで交換することです。したがって、基本的に、グループヘッダー、グループトップ要素、グループミドル要素、およびグループボトム要素のリストエントリがあります。アダプター内の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 に答える