@ -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 ( ) ) ;
}
}
}