как добавить поля/отступы на экран предпочтений

Это мой код:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
    <PreferenceCategory android:title="title" >
        <Preference
            android:layout="@layout/custom_preference_layout"
            android:title="@string/settings_rateUsOnGooglePlay" />

    </PreferenceCategory>
</PreferenceScreen>

Невозможно просто указать поля/отступы в элементе PreferenceScreen. Как добавить Margin/Padding на экран предпочтений?


person JY2k    schedule 20.07.2014    source источник


Ответы (2)


Ноябрь. Обновление 2019 г. Существует решение, отличное от первого ответа многолетней давности.

Вариант 1. Если вы расширяете свой PreferenceScreen как фрагмент в FrameLayout, вы можете назначить значение dp для layout_marginTop или layout_marginBottom вот так.

        <FrameLayout
        android:id="@+id/fragment_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="64dp" />

Вариант 2. В противном случае вы можете получить доступ к объекту RecyclerView (он содержит элементы PreferenceScreen) в OnViewCreated фрагмента следующим образом:

    // PreferenceFragment class
    @Override
    public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        final RecyclerView rv = getListView(); // This holds the PreferenceScreen's items
        rv.setPadding(0, 0, 0, 56); // (left, top, right, bottom)
    }
person Bryan W    schedule 03.11.2019

Нет, вы не можете просто указать отступ/маржу. Кажется, вам нужно либо указать собственный макет, либо android:icon="@null", как в

Android: как настроить Margin/Padding в Preference?

Или вы можете попробовать установить поля/отступы программно, как в

Android: как увеличить ширину PreferenceFragment (или получить избавиться от полей)?

person AmmarCSE    schedule 20.07.2014