Java源码示例:android.support.v7.preference.PreferenceGroup
示例1
private void tintPrefIconsRecursive(PreferenceGroup prefGroup, @ColorInt int iconColor) {
if (prefGroup != null && isAdded()) {
int prefCount = prefGroup.getPreferenceCount();
for (int i = 0; i < prefCount; i++) {
Preference pref = prefGroup.getPreference(i);
if (pref != null) {
if (isAllowedToTint(pref)) {
pref.setIcon(_cu.tintDrawable(pref.getIcon(), iconColor));
}
if (pref instanceof PreferenceGroup) {
tintPrefIconsRecursive((PreferenceGroup) pref, iconColor);
}
}
}
}
}
示例2
protected PreferenceGroup getPreferenceParent(PreferenceGroup prefGroup, Preference pref) {
for (int i = 0; i < prefGroup.getPreferenceCount(); ++i) {
Preference prefChild = prefGroup.getPreference(i);
if (prefChild == pref) {
return prefGroup;
}
if (prefChild instanceof PreferenceGroup) {
PreferenceGroup childGroup = (PreferenceGroup) prefChild;
PreferenceGroup result = getPreferenceParent(childGroup, pref);
if (result != null) {
return result;
}
}
}
return null;
}
示例3
public void updateIcons(PreferenceGroup prefGroup) {
if (prefGroup != null && isAdded()) {
int prefCount = prefGroup.getPreferenceCount();
for (int i = 0; i < prefCount; i++) {
Preference preference = prefGroup.getPreference(i);
if (preference != null) {
Drawable drawable = preference.getIcon();
if (drawable != null) {
TypedValue color = new TypedValue();
getContext().getTheme().resolveAttribute(android.R.attr.textColor, color, true);
drawable.mutate().setColorFilter(getResources().getColor(color.resourceId), PorterDuff.Mode.SRC_IN);
}
if (preference instanceof PreferenceGroup) {
updateIcons((PreferenceGroup) preference);
}
}
}
}
}
示例4
private void tintPrefIconsRecursive(PreferenceGroup prefGroup, @ColorInt int iconColor) {
if (prefGroup != null && isAdded()) {
int prefCount = prefGroup.getPreferenceCount();
for (int i = 0; i < prefCount; i++) {
Preference pref = prefGroup.getPreference(i);
if (pref != null) {
if (isAllowedToTint(pref)) {
pref.setIcon(_cu.tintDrawable(pref.getIcon(), iconColor));
}
if (pref instanceof PreferenceGroup) {
tintPrefIconsRecursive((PreferenceGroup) pref, iconColor);
}
}
}
}
}
示例5
protected PreferenceGroup getPreferenceParent(PreferenceGroup prefGroup, Preference pref) {
for (int i = 0; i < prefGroup.getPreferenceCount(); ++i) {
Preference prefChild = prefGroup.getPreference(i);
if (prefChild == pref) {
return prefGroup;
}
if (prefChild instanceof PreferenceGroup) {
PreferenceGroup childGroup = (PreferenceGroup) prefChild;
PreferenceGroup result = getPreferenceParent(childGroup, pref);
if (result != null) {
return result;
}
}
}
return null;
}
示例6
private void tintPrefIconsRecursive(PreferenceGroup prefGroup, @ColorInt int iconColor) {
if (prefGroup != null && isAdded()) {
int prefCount = prefGroup.getPreferenceCount();
for (int i = 0; i < prefCount; i++) {
Preference pref = prefGroup.getPreference(i);
if (pref != null) {
if (isAllowedToTint(pref)) {
pref.setIcon(_cu.tintDrawable(pref.getIcon(), iconColor));
}
if (pref instanceof PreferenceGroup) {
tintPrefIconsRecursive((PreferenceGroup) pref, iconColor);
}
}
}
}
}
示例7
protected PreferenceGroup getPreferenceParent(PreferenceGroup prefGroup, Preference pref) {
for (int i = 0; i < prefGroup.getPreferenceCount(); ++i) {
Preference prefChild = prefGroup.getPreference(i);
if (prefChild == pref) {
return prefGroup;
}
if (prefChild instanceof PreferenceGroup) {
PreferenceGroup childGroup = (PreferenceGroup) prefChild;
PreferenceGroup result = getPreferenceParent(childGroup, pref);
if (result != null) {
return result;
}
}
}
return null;
}
示例8
static SwitchPreference addPreference(PreferenceFragment fragment) {
PreferenceGroup pg = (PreferenceGroup) fragment.findPreference(PREFERENCE_CATEGORY_KEY);
if (pg != null) {
//<5.1// CheckBoxPreference p = new CheckBoxPreference(pg.getContext());
/*>5.1*/ SwitchPreference p = new SwitchPreference(pg.getContext());
p.setKey(PREFERENCE_KEY);
p.setTitle(PREFERENCE_TITLE);
p.setSummary(PREFERENCE_SUMMARY);
p.setPersistent(false);
pg.addPreference(p);
return p;
} else {
Log.e("FakeSignatureGlobalUI", "cannot find '" + PREFERENCE_CATEGORY_KEY +"' preference category");
return null;
}
}
示例9
static CheckBoxPreference addPreference(PreferenceFragment fragment) {
//>5.1// static SwitchPreference addPreference(PreferenceFragment fragment) {
PreferenceGroup pg = (PreferenceGroup) fragment.findPreference(PREFERENCE_CATEGORY_KEY);
if (pg != null) {
/*<5.1*/ CheckBoxPreference p = new CheckBoxPreference(pg.getContext());
//>5.1// SwitchPreference p = new SwitchPreference(pg.getContext());
p.setKey(PREFERENCE_KEY);
p.setTitle(PREFERENCE_TITLE);
p.setSummary(PREFERENCE_SUMMARY);
p.setPersistent(false);
pg.addPreference(p);
return p;
} else {
Log.e("FakeSignatureGlobalUI", "cannot find '" + PREFERENCE_CATEGORY_KEY +"' preference category");
return null;
}
}
示例10
static CheckBoxPreference addPreference(PreferenceFragment fragment) {
//>5.1// static SwitchPreference addPreference(PreferenceFragment fragment) {
PreferenceGroup pg = (PreferenceGroup) fragment.findPreference(PREFERENCE_CATEGORY_KEY);
if (pg != null) {
/*<5.1*/ CheckBoxPreference p = new CheckBoxPreference(pg.getContext());
//>5.1// SwitchPreference p = new SwitchPreference(pg.getContext());
p.setKey(PREFERENCE_KEY);
p.setTitle(PREFERENCE_TITLE);
p.setSummary(PREFERENCE_SUMMARY);
p.setPersistent(false);
pg.addPreference(p);
return p;
} else {
Log.e("FakeSignatureGlobalUI", "cannot find '" + PREFERENCE_CATEGORY_KEY +"' preference category");
return null;
}
}
示例11
static SwitchPreference addPreference(PreferenceFragment fragment) {
PreferenceGroup pg = (PreferenceGroup) fragment.findPreference(PREFERENCE_CATEGORY_KEY);
if (pg != null) {
//<5.1// CheckBoxPreference p = new CheckBoxPreference(pg.getContext());
/*>5.1*/ SwitchPreference p = new SwitchPreference(pg.getContext());
p.setKey(PREFERENCE_KEY);
p.setTitle(PREFERENCE_TITLE);
p.setSummary(PREFERENCE_SUMMARY);
p.setPersistent(false);
pg.addPreference(p);
return p;
} else {
Log.e("FakeSignatureGlobalUI", "cannot find '" + PREFERENCE_CATEGORY_KEY +"' preference category");
return null;
}
}
示例12
static SwitchPreference addPreference(PreferenceFragment fragment) {
PreferenceGroup pg = (PreferenceGroup) fragment.findPreference(PREFERENCE_CATEGORY_KEY);
if (pg != null) {
//<5.1// CheckBoxPreference p = new CheckBoxPreference(pg.getContext());
/*>5.1*/ SwitchPreference p = new SwitchPreference(pg.getContext());
p.setKey(PREFERENCE_KEY);
p.setTitle(PREFERENCE_TITLE);
p.setSummary(PREFERENCE_SUMMARY);
p.setPersistent(false);
pg.addPreference(p);
return p;
} else {
Log.e("FakeSignatureGlobalUI", "cannot find '" + PREFERENCE_CATEGORY_KEY +"' preference category");
return null;
}
}
示例13
static SwitchPreference addPreference(PreferenceFragment fragment) {
PreferenceGroup pg = (PreferenceGroup) fragment.findPreference(PREFERENCE_CATEGORY_KEY);
if (pg != null) {
//<5.1// CheckBoxPreference p = new CheckBoxPreference(pg.getContext());
/*>5.1*/ SwitchPreference p = new SwitchPreference(pg.getContext());
p.setKey(PREFERENCE_KEY);
p.setTitle(PREFERENCE_TITLE);
p.setSummary(PREFERENCE_SUMMARY);
p.setPersistent(false);
pg.addPreference(p);
return p;
} else {
Log.e("FakeSignatureGlobalUI", "cannot find '" + PREFERENCE_CATEGORY_KEY +"' preference category");
return null;
}
}
示例14
static CheckBoxPreference addPreference(PreferenceFragment fragment) {
//>5.1// static SwitchPreference addPreference(PreferenceFragment fragment) {
PreferenceGroup pg = (PreferenceGroup) fragment.findPreference(PREFERENCE_CATEGORY_KEY);
if (pg != null) {
/*<5.1*/ CheckBoxPreference p = new CheckBoxPreference(pg.getContext());
//>5.1// SwitchPreference p = new SwitchPreference(pg.getContext());
p.setKey(PREFERENCE_KEY);
p.setTitle(PREFERENCE_TITLE);
p.setSummary(PREFERENCE_SUMMARY);
p.setPersistent(false);
pg.addPreference(p);
return p;
} else {
Log.e("FakeSignatureGlobalUI", "cannot find '" + PREFERENCE_CATEGORY_KEY +"' preference category");
return null;
}
}
示例15
static SwitchPreference addPreference(PreferenceFragment fragment) {
PreferenceGroup pg = (PreferenceGroup) fragment.findPreference(PREFERENCE_CATEGORY_KEY);
if (pg != null) {
//<5.1// CheckBoxPreference p = new CheckBoxPreference(pg.getContext());
/*>5.1*/ SwitchPreference p = new SwitchPreference(pg.getContext());
p.setKey(PREFERENCE_KEY);
p.setTitle(PREFERENCE_TITLE);
p.setSummary(PREFERENCE_SUMMARY);
p.setPersistent(false);
pg.addPreference(p);
return p;
} else {
Log.e("FakeSignatureGlobalUI", "cannot find '" + PREFERENCE_CATEGORY_KEY +"' preference category");
return null;
}
}
示例16
protected void addEditAccountAction(
final IGISApplication application,
final Account account,
PreferenceGroup actionCategory)
{
Preference preferenceEdit = new Preference(mStyledContext);
preferenceEdit.setTitle(R.string.edit_account);
preferenceEdit.setSummary(R.string.edit_account_summary);
String url = application.getAccountUrl(account);
String login = application.getAccountLogin(account);
Intent intent = new Intent(mStyledContext, NGWLoginActivity.class);
intent.putExtra(NGWLoginActivity.FOR_NEW_ACCOUNT, false);
intent.putExtra(NGWLoginActivity.ACCOUNT_URL_TEXT, url);
intent.putExtra(NGWLoginActivity.ACCOUNT_LOGIN_TEXT, login);
intent.putExtra(NGWLoginActivity.CHANGE_ACCOUNT_URL, false);
intent.putExtra(NGWLoginActivity.CHANGE_ACCOUNT_LOGIN, true);
preferenceEdit.setIntent(intent);
actionCategory.addPreference(preferenceEdit);
}
示例17
private void tintPrefIconsRecursive(PreferenceGroup prefGroup, @ColorInt int iconColor) {
if (prefGroup != null && isAdded()) {
int prefCount = prefGroup.getPreferenceCount();
for (int i = 0; i < prefCount; i++) {
Preference pref = prefGroup.getPreference(i);
if (pref != null) {
if (isAllowedToTint(pref)) {
pref.setIcon(_cu.tintDrawable(pref.getIcon(), iconColor));
}
if (pref instanceof PreferenceGroup) {
tintPrefIconsRecursive((PreferenceGroup) pref, iconColor);
}
}
}
}
}
示例18
protected PreferenceGroup getPreferenceParent(PreferenceGroup prefGroup, Preference pref) {
for (int i = 0; i < prefGroup.getPreferenceCount(); ++i) {
Preference prefChild = prefGroup.getPreference(i);
if (prefChild == pref) {
return prefGroup;
}
if (prefChild instanceof PreferenceGroup) {
PreferenceGroup childGroup = (PreferenceGroup) prefChild;
PreferenceGroup result = getPreferenceParent(childGroup, pref);
if (result != null) {
return result;
}
}
}
return null;
}
示例19
private void removeAdvancePreference(@Nullable Preference preference) {
// these null checks are to fix a crash due to an NPE on 4.4.4
if (preference != null) {
PreferenceGroup group =
(PreferenceGroup) findPreference("pref_general");
if (group != null) {
group.removePreference(preference);
}
}
}
示例20
protected void removePreference(@Nullable Preference preference) {
if (preference == null) {
return;
}
PreferenceGroup parent = getPreferenceParent(getPreferenceScreen(), preference);
if (parent == null) {
return;
}
parent.removePreference(preference);
}
示例21
/**
* Append a pref to given {@code target}. If target is null, the current screen is taken
* The pref icon is tint according to color
*
* @param pref Preference to add
* @param target The target to add the pref to, or null for current screen
* @return true if successfully added
*/
protected boolean appendPreference(Preference pref, @Nullable PreferenceGroup target) {
if (target == null) {
if ((target = getPreferenceScreen()) == null) {
return false;
}
}
if (getIconTintColor() != null && pref.getIcon() != null && isAllowedToTint(pref)) {
pref.setIcon(_cu.tintDrawable(pref.getIcon(), getIconTintColor()));
}
return target.addPreference(pref);
}
示例22
protected void removePreference(@Nullable Preference preference) {
if (preference == null) {
return;
}
PreferenceGroup parent = getPreferenceParent(getPreferenceScreen(), preference);
if (parent == null) {
return;
}
parent.removePreference(preference);
}
示例23
/**
* Append a pref to given {@code target}. If target is null, the current screen is taken
* The pref icon is tint according to color
*
* @param pref Preference to add
* @param target The target to add the pref to, or null for current screen
* @return true if successfully added
*/
protected boolean appendPreference(Preference pref, @Nullable PreferenceGroup target) {
if (target == null) {
if ((target = getPreferenceScreen()) == null) {
return false;
}
}
if (getIconTintColor() != null && pref.getIcon() != null && isAllowedToTint(pref)) {
pref.setIcon(_cu.tintDrawable(pref.getIcon(), getIconTintColor()));
}
return target.addPreference(pref);
}
示例24
protected void removePreference(@Nullable Preference preference) {
if (preference == null) {
return;
}
PreferenceGroup parent = getPreferenceParent(getPreferenceScreen(), preference);
if (parent == null) {
return;
}
parent.removePreference(preference);
}
示例25
/**
* Append a pref to given {@code target}. If target is null, the current screen is taken
* The pref icon is tint according to color
*
* @param pref Preference to add
* @param target The target to add the pref to, or null for current screen
* @return true if successfully added
*/
protected boolean appendPreference(Preference pref, @Nullable PreferenceGroup target) {
if (target == null) {
if ((target = getPreferenceScreen()) == null) {
return false;
}
}
if (getIconTintColor() != null && pref.getIcon() != null && isAllowedToTint(pref)) {
pref.setIcon(_cu.tintDrawable(pref.getIcon(), getIconTintColor()));
}
return target.addPreference(pref);
}
示例26
protected void fillPreferences(PreferenceGroup screen)
{
if (mAction != null && mAction.equals(SettingsConstantsUI.ACTION_ACCOUNT)) {
Account account = getArguments().getParcelable(NGWSettingsActivity.KEY_ACCOUNT);
fillAccountPreferences(screen, account);
}
}
示例27
public void fillAccountPreferences(
PreferenceGroup screen,
final Account account)
{
final IGISApplication appContext = (IGISApplication) mStyledContext.getApplicationContext();
// add sync settings group
PreferenceCategory syncCategory = new PreferenceCategory(mStyledContext);
syncCategory.setTitle(R.string.sync);
screen.addPreference(syncCategory);
// add auto sync property
addAutoSyncProperty(appContext, account, syncCategory);
// add time for periodic sync
addPeriodicSyncTime(appContext, account, syncCategory);
// add account layers
addAccountLayers(screen, appContext, account);
// add actions group
PreferenceCategory actionCategory = new PreferenceCategory(mStyledContext);
actionCategory.setTitle(R.string.actions);
screen.addPreference(actionCategory);
// add "Edit account" action
addEditAccountAction(appContext, account, actionCategory);
// add delete account action
addDeleteAccountAction(appContext, account, actionCategory);
// TODO: for isMultiPane() change title of Settings fragment, not of Activity
// if (mChangeTitle && !NGPreferenceActivity.isMultiPane(mActivity)) {
if (mChangeTitle) {
ActionBar ab = mActivity.getSupportActionBar();
if (null != ab) {
ab.setTitle(account.name);
}
}
}
示例28
protected void addAutoSyncProperty(
final IGISApplication application,
final Account account,
PreferenceGroup syncCategory)
{
final String accountNameHash = "_" + account.name.hashCode();
SharedPreferences sharedPreferences =
mStyledContext.getSharedPreferences(Constants.PREFERENCES, Context.MODE_MULTI_PROCESS);
CheckBoxPreference enablePeriodicSync = new CheckBoxPreference(mStyledContext);
enablePeriodicSync.setKey(KEY_SYNC);
enablePeriodicSync.setPersistent(false);
enablePeriodicSync.setTitle(R.string.auto_sync);
boolean isAccountSyncEnabled = isAccountSyncEnabled(account, application.getAuthority());
enablePeriodicSync.setChecked(isAccountSyncEnabled);
enablePeriodicSync.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener()
{
@Override
public boolean onPreferenceChange(
Preference preference,
Object newValue)
{
boolean isChecked = (boolean) newValue;
setAccountSyncEnabled(account, application.getAuthority(), isChecked);
return true;
}
});
long timeStamp = sharedPreferences.getLong(
com.nextgis.maplib.util.SettingsConstants.KEY_PREF_LAST_SYNC_TIMESTAMP
+ accountNameHash, 0);
if (isAccountSyncEnabled && timeStamp > 0) {
enablePeriodicSync.setSummary(ControlHelper.getSyncTime(mStyledContext, timeStamp));
} else {
enablePeriodicSync.setSummary(R.string.auto_sync_summary);
}
syncCategory.addPreference(enablePeriodicSync);
}
示例29
protected void fillPreferences(PreferenceGroup screen)
{
if (mAction != null && mAction.equals(SettingsConstantsUI.ACTION_ACCOUNT)) {
addPreferencesFromResource(R.xml.preferences_ngid);
fillAccountPreferences(screen);
}
}
示例30
public void fillAccountPreferences(PreferenceGroup screen)
{
String notDefined = getString(R.string.not_set);
String value = mPreferences.getString(NGIDUtils.PREF_USERNAME, null);
screen.findPreference(NGIDUtils.PREF_USERNAME)
.setSummary(TextUtils.isEmpty(value) ? notDefined : value);
value = mPreferences.getString(NGIDUtils.PREF_EMAIL, null);
screen.findPreference(NGIDUtils.PREF_EMAIL)
.setSummary(TextUtils.isEmpty(value) ? notDefined : value);
value = mPreferences.getString(NGIDUtils.PREF_FIRST_NAME, null);
screen.findPreference(NGIDUtils.PREF_FIRST_NAME)
.setSummary(TextUtils.isEmpty(value) ? notDefined : value);
value = mPreferences.getString(NGIDUtils.PREF_LAST_NAME, null);
screen.findPreference(NGIDUtils.PREF_LAST_NAME)
.setSummary(TextUtils.isEmpty(value) ? notDefined : value);
screen.findPreference("sign_out")
.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener()
{
@Override
public boolean onPreferenceClick(Preference preference)
{
signOut(mPreferences, getContext());
if (!NGPreferenceActivity.isMultiPane(getActivity())) {
mActivity.onBackPressed();
mActivity.onBackPressed();
} else {
mActivity.invalidatePreferences();
}
mActivity.replaceSettingsFragment(null);
return false;
}
});
}