Custom style edit text preference.

This commit is contained in:
Docile-Alligator 2025-07-09 10:32:54 -04:00
parent 2f104fa153
commit d3d3556fda
2 changed files with 47 additions and 0 deletions

View File

@ -11,6 +11,7 @@ import androidx.core.view.OnApplyWindowInsetsListener;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.fragment.app.DialogFragment;
import androidx.preference.EditTextPreference;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
@ -79,6 +80,11 @@ public abstract class CustomFontPreferenceFragmentCompat extends PreferenceFragm
f.setTargetFragment(this, 0);
f.show(getParentFragmentManager(), DIALOG_FRAGMENT_TAG);
return true;
} else if (pref instanceof EditTextPreference) {
DialogFragment f = CustomStyleEditTextPreferenceDialogFragmentCompat.newInstance(pref.getKey());
f.setTargetFragment(this, 0);
f.show(getParentFragmentManager(), DIALOG_FRAGMENT_TAG);
return true;
}
return false;

View File

@ -0,0 +1,41 @@
package ml.docilealligator.infinityforreddit.customviews.preference
import android.app.Dialog
import android.os.Bundle
import androidx.preference.EditTextPreferenceDialogFragmentCompat
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import ml.docilealligator.infinityforreddit.R
class CustomStyleEditTextPreferenceDialogFragmentCompat : EditTextPreferenceDialogFragmentCompat() {
companion object {
@JvmStatic
fun newInstance(key: String?): CustomStyleEditTextPreferenceDialogFragmentCompat {
val fragment = CustomStyleEditTextPreferenceDialogFragmentCompat()
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()
}
}