2013-08-16 25 views
1

我無法正確顯示10英寸設備中的首選項以lanscape方向正確顯示。 它顯示類別標題和複選框真的很奇怪。看到附加的圖像來獲得想法。 PreferenceScreen10英寸設備在橫向模式下的優先性

偏好設置-XML(僅類別,原因字段在代碼加入後):

<?xml version="1.0" encoding="utf-8"?> 

<PreferenceCategory 
    android:key="settingsCategory" 
    android:title="@string/mobile_global_settings" > 
</PreferenceCategory> 

在SettingsActivity我添加PreferenceFragment這樣的:

protected void onCreate(Bundle savedInstanceState) { 
    setTheme(R.style.Theme_Tp_actionbar_style); 
    super.onCreate(savedInstanceState); 
    getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit(); 
} 

我PreferenceFragment看起來像這樣(我必須使用不同settings_keys爲不同的用戶登錄到應用程序):

public static class MyPreferenceFragment extends PreferenceFragment 
{ 
    @Override 
    public void onCreate(final Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.settings); 

     TPSettingsActivity act = (TPSettingsActivity)getActivity(); 
     String userName = "xxx"; 

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

     PreferenceCategory targetCategory = (PreferenceCategory)findPreference("settingsCategory"); 

     CheckBoxPreference checkBoxPreference = new CheckBoxPreference(getActivity()); 
     checkBoxPreference.setKey(userName + "_autoclear"); 
     checkBoxPreference.setChecked(true); 
     checkBoxPreference.setSummary(R.string.mobile_settings_onoff); 
     checkBoxPreference.setTitle(R.string.mobile_settings_autoclean); 
     checkBoxPreference.setChecked(prefs.getBoolean(userName + "_autoclear", false)); 
     targetCategory.addPreference(checkBoxPreference); 

     TPListPreference listPref = new TPListPreference(getActivity()); 
     listPref.setKey(userName + "_autoclearperiod"); 
     listPref.setEntries(R.array.autoclearOptions); 
     listPref.setEntryValues(R.array.autoclearValues); 
     listPref.setSummary(R.string.mobile_settings_currentinterval); 
     listPref.setTitle(R.string.mobile_settings_interval); 
     listPref.setValue(prefs.getString(userName + "_autoclearperiod", "7")); 
     targetCategory.addPreference(listPref); 
    } 
} 

使用不應用特定主題時,也會出現這種情況。我現在用的主題是發電機使用在Android資產工作室網站上列出的ThemeGenerator: Android Asset Studio

+1

你能發佈你的xml嗎? – Canberk

+0

同意。沒有任何代碼,這是不可能的,以幫助你。 – CommonsWare

+0

嗯,你做錯了:)如果你使用eclipse,去「文件>新建>其他> Android對象>設置活動」,你會得到一個很好的例子。也許在一個新的項目中,因爲它會放置很多文件。 – zapl

回答

2

如果您的應用程序是API的高於11,這樣做:

public class FragmentPreferences extends Activity{ 
/*..*/ 
} 

,而不是這樣的:

public class FragmentPreferences extends PreferenceActivity{ 
    /*..*/ 
}