Нежелательное пустое пространство в PreferenceFragmentCompat - PullRequest
0 голосов
/ 03 октября 2018

В моем приложении для Android я определил очень простой PreferenceScreen:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <ListPreference
        android:entries="@array/test_entries"
        android:entryValues="@array/test_values"
        android:key="key_test1"
        android:title="Test title 1" />

    <CheckBoxPreference
        android:key="key_test2"
        android:summary="Test description 1"
        android:title="Test title 2" />
</PreferenceScreen>

и реализовал соответствующий класс PreferenceFragmentCompat:

class SettingsFragment : PreferenceFragmentCompat() {

    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
        setPreferencesFromResource(R.xml.settings, rootKey)
    }
}

Зависимость яиспользуя:

implementation "com.android.support:preference-v7:28.0.0"

И код для макета, в котором находится Fragment:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".ui.activity.MainActivity">

    <android.support.v7.widget.Toolbar
        android:id="@+id/mainToolbar"
        android:layout_width="match_parent"
        android:layout_height="?android:attr/actionBarSize" />

    <fragment
        android:id="@+id/navHostFragment"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:navGraph="@navigation/navigation" />
</LinearLayout>

Все работает нормально, за исключением огромного пустого пространства с левой стороны каждогопредпочтение:

enter image description here

В чем причина этой проблемы и как я могу ее предотвратить?

РЕДАКТИРОВАТЬ:

Кажется, проблема в том, что место для значков зарезервировано, даже если мы не используем значки для записей предпочтений.

Установка атрибута icon предпочтения на @nullне действует.

Установка атрибута iconSpaceReserved на false решает проблему для элементов Preference, но не влияет на PreferenceCategory элементов.

1 Ответ

0 голосов
/ 05 мая 2019

Если используется AndroidX , добавьте следующий атрибут в ваши предпочтения (и категории предпочтений, если необходимо) в XML:

<Preference
    ...
    app:iconSpaceReserved="false"
    .../>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...