2

xml ファイルからの Preference アクティビティに SherlockPreferenceActivity を使用します。以下のコード:

public class Setting extends SherlockPreferenceActivity
{
protected void onCreate(Bundle paramBundle)
{
  super.onCreate(paramBundle);
  addPreferencesFromResource(R.xml.setting);
}

すべて正常に動作しますが、左右のマージンが 0dip である必要があります (下の写真)。 ここに画像の説明を入力

ABS ソース コードで検索しようとしましたが、カスタマイズできませんでした。誰かが前にやったことがありますか?

更新:より詳細な画像をアップロードします ここに画像の説明を入力

setting.xml コンテンツ:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
    <PreferenceCategory android:title="@string/system_setting" >
        <CheckBoxPreference
            android:defaultValue="true"
            android:key="mode_on_off"
            android:summaryOff="Sub Setting 1"
            android:summaryOn="Sub Setting 1 On"
            android:title="Setting 1" />
        <CheckBoxPreference
            android:defaultValue="true"
            android:key="filter_on_off"
            android:summaryOff="Sub Setting 2"
            android:summaryOn="Sub Setting 2 On"
            android:title="Setting 2" />
        <CheckBoxPreference
            android:defaultValue="false"
            android:key="screen"
            android:summaryOff="Sub Setting 3"
            android:summaryOn="Sub Setting 3 on"
            android:title="Setting 2" />

    </PreferenceCategory>
</PreferenceScreen>
4

2 に答える 2

1

私はそれを機能させることができました-これが最も優れた/最もクリーンなソリューションであるかどうかはわかりませんが、機能します。

次の変更を行う必要がありました。

  1. ActionBarActivity のコピーを作成し、新しいクラスで PreferenceActivity を拡張します。

    public abstract class ActionBarPreferenceActivity extends PreferenceActivity { // 「ActionBarActivity」とまったく同じ内容 }

  2. ActionBarHelperBase.java の onCreate() をわずかに変更 - PreferenceActivity クラスの特殊なケースを作成

    @Override public void onCreate(Bundle savedInstanceState) { // アクティビティが PreferenceActivity の場合、リクエストを作成しない if (!(mActivity instanceof PreferenceActivity)) { mActivity.requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); }

  3. super.onCreate() を呼び出す前に、PreferenceActivity でこのクラスを拡張し、FEATURE_CUSTOM_TITLE のリクエストを追加します。

public class MyPreferenceActivity extends ActionBarPreferenceActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); // add this line
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.preferences);
    // etc etc
}

// etc etc

私が知る限り、変更 2 と 3 が必要なのは、PreferenceActivity のためです。

「super.onCreate() を呼び出すとすぐに、ViewGroup が設定されるため、ウィンドウのパラメーターを変更することはできません。」(答えに対するオリバーのコメントを参照)

PreferenceActivity アクティビティのコンポーネントが作成される順序は、プレーンな Activity アクティビティとは異なると思います。

于 2013-05-09T12:22:25.650 に答える