2

カスタム 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);            
    }      
}   
}

Androidマニフェスト:

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

スタイル.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">
4

1 に答える 1

1

android:layout_width設定していないため、テーマが機能していませんandroid: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 だけを含むレイアウト リソースを提供する必要があります。ただし、スタイル (上記参照) を使用することを選択した場合は、レイアウトを設定する必要はありません。

于 2013-08-07T02:06:24.790 に答える