public class

PreferenceCategory

extends PreferenceGroup

 java.lang.Object

androidx.preference.Preference

androidx.preference.PreferenceGroup

↳androidx.preference.PreferenceCategory

Gradle dependencies

compile group: 'androidx.preference', name: 'preference', version: '1.2.1'

  • groupId: androidx.preference
  • artifactId: preference
  • version: 1.2.1

Artifact androidx.preference:preference:1.2.1 it located at Google repository (https://maven.google.com/)

Androidx artifact mapping:

androidx.preference:preference com.android.support:preference-v7

Androidx class mapping:

androidx.preference.PreferenceCategory android.support.v7.preference.PreferenceCategory

Overview

A container that is used to group similar Preferences. A PreferenceCategory displays a category title and visually separates groups of Preferences.

Developer Guides

For information about building a settings screen using the AndroidX Preference library, see Settings.

Summary

Fields
from PreferenceDEFAULT_ORDER
Constructors
publicPreferenceCategory(Context context)

publicPreferenceCategory(Context context, AttributeSet attrs)

publicPreferenceCategory(Context context, AttributeSet attrs, int defStyleAttr)

publicPreferenceCategory(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)

Methods
public booleanisEnabled()

Checks whether this preference should be enabled in the list.

public voidonBindViewHolder(PreferenceViewHolder holder)

Binds the created View to the data for this preference.

public booleanshouldDisableDependents()

Checks whether this preference's dependents should currently be disabled.

from PreferenceGroupaddItemFromInflater, addPreference, dispatchRestoreInstanceState, dispatchSaveInstanceState, findPreference, getInitialExpandedChildrenCount, getOnExpandButtonClickListener, getPreference, getPreferenceCount, isAttached, isOnSameScreenAsChildren, isOrderingAsAdded, notifyDependencyChange, onAttached, onDetached, onPrepareAddPreference, onRestoreInstanceState, onSaveInstanceState, removeAll, removePreference, removePreferenceRecursively, setInitialExpandedChildrenCount, setOnExpandButtonClickListener, setOrderingAsAdded
from PreferencecallChangeListener, compareTo, findPreferenceInHierarchy, getContext, getDependency, getExtras, getFragment, getIcon, getIntent, getKey, getLayoutResource, getOnPreferenceChangeListener, getOnPreferenceClickListener, getOrder, getParent, getPersistedBoolean, getPersistedFloat, getPersistedInt, getPersistedLong, getPersistedString, getPersistedStringSet, getPreferenceDataStore, getPreferenceManager, getSharedPreferences, getShouldDisableView, getSummary, getSummaryProvider, getTitle, getWidgetLayoutResource, hasKey, isCopyingEnabled, isIconSpaceReserved, isPersistent, isSelectable, isShown, isSingleLineTitle, isVisible, notifyChanged, notifyHierarchyChanged, onAttachedToHierarchy, onAttachedToHierarchy, onClick, onDependencyChanged, onGetDefaultValue, onInitializeAccessibilityNodeInfo, onParentChanged, onPrepareForRemoval, onSetInitialValue, onSetInitialValue, peekExtras, performClick, performClick, persistBoolean, persistFloat, persistInt, persistLong, persistString, persistStringSet, restoreHierarchyState, saveHierarchyState, setCopyingEnabled, setDefaultValue, setDependency, setEnabled, setFragment, setIcon, setIconSpaceReserved, setIntent, setKey, setLayoutResource, setOnPreferenceChangeListener, setOnPreferenceClickListener, setOrder, setPersistent, setPreferenceDataStore, setSelectable, setShouldDisableView, setSingleLineTitle, setSummary, setSummary, setSummaryProvider, setTitle, setTitle, setViewId, setVisible, setWidgetLayoutResource, shouldPersist, toString
from java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructors

public PreferenceCategory(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)

public PreferenceCategory(Context context, AttributeSet attrs, int defStyleAttr)

public PreferenceCategory(Context context, AttributeSet attrs)

public PreferenceCategory(Context context)

Methods

public boolean isEnabled()

Checks whether this preference should be enabled in the list.

Returns:

true if this preference is enabled, false otherwise

public boolean shouldDisableDependents()

Checks whether this preference's dependents should currently be disabled.

Returns:

true if the dependents should be disabled, otherwise false

public void onBindViewHolder(PreferenceViewHolder holder)

Binds the created View to the data for this preference.

This is a good place to grab references to custom Views in the layout and set properties on them.

Make sure to call through to the superclass's implementation.

Parameters:

holder: The ViewHolder that provides references to the views to fill in. These views will be recycled, so you should not hold a reference to them after this method returns.

Source

/*
 * Copyright 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package androidx.preference;

import android.content.Context;
import android.os.Build;
import android.os.Build.VERSION_CODES;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.core.content.res.TypedArrayUtils;

/**
 * A container that is used to group similar {@link Preference}s. A PreferenceCategory displays a
 * category title and visually separates groups of Preferences.
 *
 * <div class="special reference">
 * <h3>Developer Guides</h3>
 * <p>For information about building a settings screen using the AndroidX Preference library, see
 * <a href="{@docRoot}guide/topics/ui/settings.html">Settings</a>.</p>
 * </div>
 */
public class PreferenceCategory extends PreferenceGroup {

    public PreferenceCategory(
            @NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr,
            int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

    public PreferenceCategory(@NonNull Context context, @Nullable AttributeSet attrs,
            int defStyleAttr) {
        this(context, attrs, defStyleAttr, 0);
    }

    public PreferenceCategory(@NonNull Context context, @Nullable AttributeSet attrs) {
        this(context, attrs, TypedArrayUtils.getAttr(context, R.attr.preferenceCategoryStyle,
                android.R.attr.preferenceCategoryStyle));
    }

    public PreferenceCategory(@NonNull Context context) {
        this(context, null);
    }

    @Override
    public boolean isEnabled() {
        return false;
    }

    @Override
    public boolean shouldDisableDependents() {
        return !super.isEnabled();
    }

    @Override
    public void onBindViewHolder(@NonNull PreferenceViewHolder holder) {
        super.onBindViewHolder(holder);
        if (Build.VERSION.SDK_INT >= VERSION_CODES.P) {
            holder.itemView.setAccessibilityHeading(true);
        } else if (Build.VERSION.SDK_INT < VERSION_CODES.LOLLIPOP) {
            // We can't safely look for colorAccent in the category layout XML below Lollipop, as it
            // only exists within AppCompat, and will crash if using a platform theme. We should
            // still try and parse the attribute here in case we are running inside
            // PreferenceFragmentCompat with an AppCompat theme, and to set the category title
            // accordingly.
            final TypedValue value = new TypedValue();
            if (!getContext().getTheme().resolveAttribute(
                    androidx.appcompat.R.attr.colorAccent, value, true)) {
                // Return if the attribute could not be resolved
                return;
            }
            final TextView titleView = (TextView) holder.findViewById(android.R.id.title);
            if (titleView == null) {
                return;
            }
            final int fallbackColor = ContextCompat.getColor(getContext(),
                    R.color.preference_fallback_accent_color);
            // If the current color is not the fallback color we hardcode in the layout XML,
            // then this has already been handled by developers and we shouldn't override the
            // color.
            if (titleView.getCurrentTextColor() != fallbackColor) {
                return;
            }
            titleView.setTextColor(value.data);
        }
    }
}