1

アプリケーションに設定ページがあります。Multiple Choice ListPreference がないため (API レベル 11 の後にあります)、設定ページに ListView を配置したいと考えています。しかし、preferences.xml では Linear Layout を挿入できません。

ここに私のpreferences.xmlがあります:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
        <PreferenceCategory
                android:title="Auto Refresh Settings">
                <CheckBoxPreference
                        android:title="Auto Refresh"
                        android:defaultValue="false"
                        android:summary="Enable / Disable Auto Refresh"
                        android:key="checkboxPref" />
                <ListPreference
                        android:title="Auto Refresh Frequency"
                        android:summary="Select the frequency of Auto Refresh"
                        android:key="listPref"
                        android:defaultValue="20"
                        android:entries="@array/listArray"
                        android:entryValues="@array/listValues" />
        </PreferenceCategory>

        </PreferenceScreen>

これはどのように見えるかです:

Preferences.xml のグラフィカルなレイアウト

私が欲しいもの:

欲しいもの:

最後に私の Settings.java (設定):

package com.sarkolata.coding;


import android.content.Context;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceActivity;
import android.preference.PreferenceCategory;
import android.preference.PreferenceManager;
import android.widget.Toast;
public class Settings extends PreferenceActivity
{


     @Override
     protected void onCreate(Bundle savedInstanceState)
     {
          super.onCreate(savedInstanceState);
          addPreferencesFromResource(R.xml.preferences);


          final Preference ListPref = (Preference) findPreference("listPref");
          final Preference CheckPref = (Preference) findPreference("checkboxPref");


          if(PreferenceManager.getDefaultSharedPreferences(getBaseContext()).getBoolean("checkboxPref", false)) {
              ListPref.setEnabled(false);
          }

          ListPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {

            public boolean onPreferenceChange(Preference preference, Object newValue) {

                Main.update_tick = Integer.parseInt(newValue.toString()) * 1000;

                return true;
            }
        });



          CheckPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {

            public boolean onPreferenceChange(Preference preference, Object newValue) {

                if(newValue.toString() == "true")
                {
                    ListPref.setEnabled(false);
                } else {
                    ListPref.setEnabled(true);
                }

                if(newValue.toString() == "true") {

                Main.refreshAllServers(Main.context, Main.bcontext,"start");

                } else {

                    Main.refreshAllServers(Main.context, Main.bcontext,"stop");

                }

                return true;
            }
        });

     }



}
4

1 に答える 1

1

PreferenceActivity はすでに ListView を使用して多くの設定を表示しているため、設定ペイン内に ListView を追加するのが賢明かどうかはわかりません。おそらく、複数選択を可能にするMultiSelectListPreference設定を使用したいと思うでしょう。http://blog.350nice.com/wp/archives/240で例を見ることができます。

于 2012-07-27T00:14:51.310 に答える