diff --git a/src/org/thoughtcrime/securesms/preferences/CorrectedPreferenceFragment.java b/src/org/thoughtcrime/securesms/preferences/CorrectedPreferenceFragment.java index 848af5490d..c311ff4d4b 100644 --- a/src/org/thoughtcrime/securesms/preferences/CorrectedPreferenceFragment.java +++ b/src/org/thoughtcrime/securesms/preferences/CorrectedPreferenceFragment.java @@ -1,12 +1,21 @@ package org.thoughtcrime.securesms.preferences; +import android.annotation.SuppressLint; import android.os.Bundle; import android.support.v4.app.DialogFragment; +import android.support.v4.view.ViewCompat; import android.support.v7.preference.Preference; +import android.support.v7.preference.PreferenceCategory; import android.support.v7.preference.PreferenceFragmentCompat; +import android.support.v7.preference.PreferenceGroupAdapter; +import android.support.v7.preference.PreferenceScreen; +import android.support.v7.preference.PreferenceViewHolder; +import android.support.v7.widget.RecyclerView; import android.view.View; +import android.view.ViewGroup; +import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.components.CustomDefaultPreference; import org.thoughtcrime.securesms.preferences.widgets.ColorPickerPreference; import org.thoughtcrime.securesms.preferences.widgets.ColorPickerPreferenceDialogFragmentCompat; @@ -44,5 +53,33 @@ public abstract class CorrectedPreferenceFragment extends PreferenceFragmentComp } } + @Override + protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) { + return new PreferenceGroupAdapter(preferenceScreen) { + @SuppressLint("RestrictedApi") + @Override + public void onBindViewHolder(PreferenceViewHolder holder, int position) { + super.onBindViewHolder(holder, position); + Preference preference = getItem(position); + if (preference instanceof PreferenceCategory) { + setZeroPaddingToLayoutChildren(holder.itemView); + } else { + View iconFrame = holder.itemView.findViewById(R.id.icon_frame); + if (iconFrame != null) { + iconFrame.setVisibility(preference.getIcon() == null ? View.GONE : View.VISIBLE); + } + } + } + }; + } + private void setZeroPaddingToLayoutChildren(View view) { + if (!(view instanceof ViewGroup)) return; + + ViewGroup viewGroup = (ViewGroup) view; + for (int i = 0; i < viewGroup.getChildCount(); i++) { + setZeroPaddingToLayoutChildren(viewGroup.getChildAt(i)); + ViewCompat.setPaddingRelative(viewGroup, 0, viewGroup.getPaddingTop(), ViewCompat.getPaddingEnd(viewGroup), viewGroup.getPaddingBottom()); + } + } }