编码首选项屏幕的问题

时间:2011-08-08 12:57:59

标签: android android-preferences

我对此代码有一个很大的问题:

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;

}

第一个首选项屏幕是一个漂亮的白色屏幕,顶部有一条蓝线,在行中我们有英文“首选项”中的文本“Einstellungen”,颜色为白色。

然而,当我点击“Sprache”时,下一个预制屏幕是黑色的,并且有一个机器人Titlebar ....我想创建更多的“pre-prefscreens”并且它们都必须是白色的,这些蓝线在顶部

请帮助

Thankx Alex

1 个答案:

答案 0 :(得分:0)

这是Android 2.1u1中的已知错误。

如果您使用多级首选项屏幕,则Light主题不会传播到下一级屏幕。对于更高的SDK 2.2及更高版本,它可以完美地运行问题也出现在某些设备上。不幸的是,除了将主题留下黑暗之外,还没有解决方案。