PreferenceCategory主题未应用于PreferenceScreen

时间:2013-04-25 09:45:48

标签: java android google-maps android-layout

我看到了很多关于这个问题的答案和线索以及如何创建自定义PreferenceCategory的教程。什么都不适合我。我的主题没有应用。

PreferenceActivity类:

public class PreferencesActivity extends PreferenceActivity{

private MyPreferenceFragment preferences;

@Override   
public void onCreate(Bundle savedInstanceState) {   
    super.onCreate(savedInstanceState);
    preferences = new MyPreferenceFragment();
    getFragmentManager().beginTransaction().replace(android.R.id.content, preferences).commit();
}

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

AndroidManifest:

<activity android:name="com.gpsy.preferences.PreferencesActivity"
            android:screenOrientation="portrait" android:configChanges="keyboardHidden|orientation"             
            android:theme="@style/Custom">
</activity>

styles.xml:

<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="PreferenceListHeader" >
    <item name="android:textColor">#000000</item>
    <item name="android:textStyle">bold</item>
    <item name="android:textSize">12sp</item>
    <item name="android:background">@color/Gray</item>
    <item name="android:paddingTop">6dp</item>
    <item name="android:paddingBottom">6dp</item>
    <item name="android:paddingLeft">12dp</item>
</style>

<style name="Custom" parent="@android:Theme.Light.NoTitleBar">
    <item name="android:listSeparatorTextViewStyle">@style/PreferenceListHeader</item>               
</style>
</resources>

mypreferences.xml:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >

<PreferenceCategory
        android:title="@string/gps_settings">

    <ListPreference
            android:key="nav_systems_preference"
            android:title="@string/my_nav_app"
            android:summary="summary_checkbox_preference"/>

</PreferenceCategory>
</PreferenceScreen>

另外,我尝试以下列方式应用主题但没有成功:

setTheme(R.style.Custom);

尝试将PreferenceCategory标记更改为

<PreferenceCategory android:widgetLayout="@style/Custom"
        android:title="@string/gps_settings">

1 个答案:

答案 0 :(得分:1)

您的主题无效,因为您未设置android:layout_widthandroid:layout_weight,也无法从父级(未提供)继承。

对于<style name="PreferenceListHeader" >,只需添加以下内容:

<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">wrap_content</item>

您不需要setTheme(R.style.Custom);android:widgetLayout="@style/Custom"。无论如何,您无法为android:widgetLayout提供样式。您必须提供仅包含TextView的布局资源。但如果您选择使用该样式(见上文),则无需设置布局。