mirror of
https://github.com/Docile-Alligator/Infinity-For-Reddit.git
synced 2025-10-29 19:44:40 +00:00
Custom dialog style for ListPreference.
This commit is contained in:
parent
6a2e59e255
commit
dad626b703
@ -7,12 +7,13 @@ import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.preference.ListPreference;
|
||||
import androidx.preference.PreferenceViewHolder;
|
||||
|
||||
import ml.docilealligator.infinityforreddit.CustomFontReceiver;
|
||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapperReceiver;
|
||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapperReceiver;
|
||||
|
||||
public class CustomFontListPreference extends ListPreference implements CustomFontReceiver, CustomThemeWrapperReceiver {
|
||||
private CustomThemeWrapper customThemeWrapper;
|
||||
@ -35,7 +36,7 @@ public class CustomFontListPreference extends ListPreference implements CustomFo
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(PreferenceViewHolder holder) {
|
||||
public void onBindViewHolder(@NonNull PreferenceViewHolder holder) {
|
||||
super.onBindViewHolder(holder);
|
||||
View iconImageView = holder.findViewById(android.R.id.icon);
|
||||
View titleTextView = holder.findViewById(android.R.id.title);
|
||||
|
||||
@ -10,8 +10,9 @@ import androidx.preference.PreferenceCategory;
|
||||
import androidx.preference.PreferenceViewHolder;
|
||||
|
||||
import ml.docilealligator.infinityforreddit.CustomFontReceiver;
|
||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapperReceiver;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapperReceiver;
|
||||
|
||||
public class CustomFontPreferenceCategory extends PreferenceCategory implements CustomFontReceiver, CustomThemeWrapperReceiver {
|
||||
private CustomThemeWrapper customThemeWrapper;
|
||||
@ -37,6 +38,11 @@ public class CustomFontPreferenceCategory extends PreferenceCategory implements
|
||||
public void onBindViewHolder(PreferenceViewHolder holder) {
|
||||
super.onBindViewHolder(holder);
|
||||
View titleTextView = holder.findViewById(android.R.id.title);
|
||||
holder.setDividerAllowedAbove(false);
|
||||
View iconView = holder.findViewById(R.id.icon_frame);
|
||||
if (iconView != null) {
|
||||
iconView.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
if (customThemeWrapper != null) {
|
||||
if (titleTextView instanceof TextView) {
|
||||
|
||||
@ -10,15 +10,20 @@ import androidx.core.graphics.Insets;
|
||||
import androidx.core.view.OnApplyWindowInsetsListener;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.core.view.WindowInsetsCompat;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
import androidx.preference.ListPreference;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceFragmentCompat;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import ml.docilealligator.infinityforreddit.CustomFontReceiver;
|
||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapperReceiver;
|
||||
import ml.docilealligator.infinityforreddit.activities.SettingsActivity;
|
||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapperReceiver;
|
||||
|
||||
public abstract class CustomFontPreferenceFragmentCompat extends PreferenceFragmentCompat implements PreferenceFragmentCompat.OnPreferenceDisplayDialogCallback {
|
||||
private static final String DIALOG_FRAGMENT_TAG =
|
||||
"androidx.preference.PreferenceFragment.DIALOG";
|
||||
|
||||
public abstract class CustomFontPreferenceFragmentCompat extends PreferenceFragmentCompat {
|
||||
protected SettingsActivity activity;
|
||||
|
||||
@Override
|
||||
@ -61,6 +66,18 @@ public abstract class CustomFontPreferenceFragmentCompat extends PreferenceFragm
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPreferenceDisplayDialog(@NonNull PreferenceFragmentCompat caller, @NonNull Preference pref) {
|
||||
if (pref instanceof ListPreference) {
|
||||
DialogFragment f = CustomStyleListPreferenceDialogFragmentCompat.newInstance(pref.getKey());
|
||||
f.setTargetFragment(this, 0);
|
||||
f.show(getParentFragmentManager(), DIALOG_FRAGMENT_TAG);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(@NonNull Context context) {
|
||||
super.onAttach(context);
|
||||
|
||||
@ -0,0 +1,41 @@
|
||||
package ml.docilealligator.infinityforreddit.customviews.preference
|
||||
|
||||
import android.app.Dialog
|
||||
import android.os.Bundle
|
||||
import androidx.preference.ListPreferenceDialogFragmentCompat
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import ml.docilealligator.infinityforreddit.R
|
||||
|
||||
class CustomStyleListPreferenceDialogFragmentCompat : ListPreferenceDialogFragmentCompat() {
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun newInstance(key: String?): CustomStyleListPreferenceDialogFragmentCompat {
|
||||
val fragment = CustomStyleListPreferenceDialogFragmentCompat()
|
||||
val b = Bundle(1)
|
||||
b.putString(ARG_KEY, key)
|
||||
fragment.arguments = b
|
||||
return fragment
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
val builder = MaterialAlertDialogBuilder(requireContext(), R.style.MaterialAlertDialogTheme)
|
||||
.setTitle(preference.dialogTitle)
|
||||
.setIcon(preference.dialogIcon)
|
||||
.setPositiveButton(preference.positiveButtonText, this)
|
||||
.setNegativeButton(preference.negativeButtonText, this)
|
||||
|
||||
val contentView = onCreateDialogView(requireContext())
|
||||
if (contentView != null) {
|
||||
onBindDialogView(contentView)
|
||||
builder.setView(contentView)
|
||||
} else {
|
||||
builder.setMessage(preference.dialogMessage)
|
||||
}
|
||||
|
||||
onPrepareDialogBuilder(builder)
|
||||
|
||||
return builder.create()
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user