In my Android app i've defined a very basic 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>
And implemented the corresponding PreferenceFragmentCompat
class:
class SettingsFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.settings, rootKey)
}
}
The dependency i'm using:
implementation "com.android.support:preference-v7:28.0.0"
And the code for the layout that hosts the 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>
Everything is working fine, except there's a huge blank space on the left side of each preference:
What is the cause of this problem and how can i prevent it?
EDIT:
It seems the problem is the space for the icons are reserved, even if we use no icons for the preference entries.
Setting the icon
attribute of the preference to @null
has no effect.
Setting the iconSpaceReserved
attribute to false
solves the problem for the Preference
items, but it has no effect on PreferenceCategory
items.
If using AndroidX, add the following attribute to your Preferences (and Preference Categories if needed) in XML:
<Preference
...
app:iconSpaceReserved="false"
.../>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With