Я решил свою проблему благодаря себе, а не Google.
Из всех вопросов, которые вы получаете о preference.getView
здесь и везде, вы понимаете, что это не работает даром и действительно вСтандартная реализация Google Preference
это бесполезно, она будет возвращать вам НОВЫЙ вид каждый раз, когда вы его называете, в то время как старый вид (используемый на PreferenceScreen
) останется нетронутым ...
так что, если вы не создаетеВесь PreferenceScreen вне фреймворка Android, этот метод довольно бесполезен ... Но я нашел обходной путь
Прежде всего, он работает только при использовании библиотек Compat
, мне потребовался 1 день работы, покачтобы заставить его работать из-за этого ...
, поэтому ваш ученик должен: implementation "com.android.support:preference-v7:$support_library_version"
А ваш класс должен: public class SecondarySettingsFragment extends PreferenceFragmentCompat
После переноса из любой точки вашей деятельностиВы хотите, чтобы PreferenceView выполнял ((RecyclerView)findViewById(android.support.v7.preference.R.id.recycler_view).getChildAt(index);
НАБЛЮДЕНИЕ, поскольку RecycleView
будет иметь НУЛЕВЫХ ДЕТЕЙ в течение onCreate()
, вы должны addOnGlobalLayoutListener
или вызывать свой метод из другого места