Проблемы с настройкой экрана настроек - PullRequest
0 голосов
/ 08 августа 2011

У меня большая проблема с этим кодом:

public class Preferences extends PreferenceActivity {

private LinearLayout rootView;


private LinearLayout titleView;

private ListView preferenceView;

private TextView textView;



@Override

protected void onCreate(Bundle savedInstanceState) {

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);

    rootView = new LinearLayout(this);
    rootView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    rootView.setOrientation(LinearLayout.VERTICAL);

    textView = new TextView(this);
    textView.setText(R.string.tx_einstellungen);
    textView.setTextColor(Color.WHITE);
    textView.setTextSize(20);

    titleView = new LinearLayout(this);
    titleView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 45));
    titleView.setBackgroundResource(R.color.background);
    titleView.addView(textView);
    titleView.setGravity(Gravity.CENTER);

    preferenceView = new ListView(this);
    preferenceView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    preferenceView.setId(android.R.id.list);

    PreferenceScreen screen = createPreferenceHierarchy();
    screen.bind(preferenceView);
    preferenceView.setAdapter(screen.getRootAdapter());

    rootView.addView(titleView);
    rootView.addView(preferenceView);


    this.setContentView(rootView);

    setPreferenceScreen(screen);

}


private PreferenceScreen createPreferenceHierarchy() {

    PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this);
    PreferenceScreen lang_screen = getPreferenceManager().createPreferenceScreen(this);

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());

    // Screen preference

    lang_screen.setKey("language_pref");
    lang_screen.setTitle("Sprache");
    lang_screen.bind(preferenceView);
    root.addPreference(lang_screen);

    // Example of next screen toggle preference
    CheckBoxPreference nextScreenCheckBoxPref = new CheckBoxPreference(this);
    nextScreenCheckBoxPref.setKey("next_screen_toggle_preference");
    nextScreenCheckBoxPref.setTitle("");
    nextScreenCheckBoxPref.setSummary("");
    lang_screen.addPreference(nextScreenCheckBoxPref);


    return root;

}

Первый экран PreferenceScreen - это приятный белый экран с синей линией вверху, а в строке у нас есть текст «Einstellungen» на английском »Предпочтения "в цвете белый.

Однако, когда я нажимаю" Sprache ", следующий предварительный экран становится черным, и появляется Android Titlebar .... Я хочу создать больше" подэкранных экранов ", и все они должныбыть белым с синей линией наверху.

ПОЖАЛУЙСТА, ПОМОГИТЕ

Thankx Alex

1 Ответ

0 голосов
/ 08 августа 2011

Это известная ошибка в Android 2.1u1.

Если вы используете многоуровневый экран настроек, тема «Свет» не распространяется на экраны следующего уровня.Для более высокого SDK 2.2 и выше он работает отлично.Проблема также на некоторых устройствах.К сожалению, пока нет решения, кроме как оставить тему темной.

...