相关疑难解决方法(0)

Android:如何删除首选项屏幕中的边距/填充

我在设计偏好屏幕时遇到了非常奇怪的问题.虽然我没有给出任何布局余量,但是左边留有一些空间.

如下图所示: 在此输入图像描述

XML:

   <PreferenceScreen android:title="demo" >
       <CheckBoxPreference
           android:defaultValue="false"
            android:key="prefSync"`
            android:title="Auto Sync" />
    </PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

我在屏幕上添加复选框首选项时做错了什么?

android preference checkboxpreference

55
推荐指数
7
解决办法
2万
查看次数

如何删除PreferenceScreen中的左缩进?

由于不推荐使用PreferenceFragment,因此我使用PreferenceFragmentCompat.

更换片段后,我从内容中得到左缩进:
更换片段后,我会从内容中删除缩进.

缩进很可能是因为图标而出现,但我不使用它们(默认是没有图标).

我试图将图标属性设置为android:icon="@null"android:color/transparent,但它没有帮助.

替换片段的功能:

private fun replaceFragment(fragment: Fragment) {
    supportFragmentManager.beginTransaction()
            .replace(R.id.fragment_layout, fragment)
            .commit()
}
Run Code Online (Sandbox Code Playgroud)

content_main.xml

<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"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context=".MainActivity"
    tools:showIn="@layout/app_bar_main">

    <FrameLayout
        android:id="@+id/fragment_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

我的设置片段:

class SettingsFragment : PreferenceFragmentCompat() {

companion object {

    /**
     * A preference value change listener that updates the preference's summary
     * to reflect its new value.
     */
    private val sBindPreferenceSummaryToValueListener = Preference.OnPreferenceChangeListener { preference, value ->

        val stringValue = value.toString()

        if (preference is ListPreference) …
Run Code Online (Sandbox Code Playgroud)

android android-preferences kotlin

11
推荐指数
2
解决办法
1043
查看次数

如何设置PreferenceFragmentCompat的样式

我正在使用PreferenceFragmentCompat,但我不认为它的风格正确.

在此输入图像描述

首选项的标题似乎很大,PreferenceCategory文本是不可读的,整个想法似乎是关闭.

这就是我在theme.xml中的内容

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    ...
    <item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
</style>

<style name="PreferenceThemeOverlay">
    <item name="preferenceScreenStyle">@style/Preference.PreferenceScreen</item>
    <item name="preferenceFragmentStyle">@style/PreferenceFragment</item>
    <item name="preferenceCategoryStyle">@style/Preference.Category</item>
    <item name="preferenceStyle">@style/Preference</item>
    <item name="preferenceInformationStyle">@style/Preference.Information</item>
    <item name="checkBoxPreferenceStyle">@style/Preference.CheckBoxPreference</item>
    <item name="switchPreferenceCompatStyle">@style/Preference.SwitchPreferenceCompat</item>
    <item name="dialogPreferenceStyle">@style/Preference.DialogPreference</item>
    <item name="editTextPreferenceStyle">@style/Preference.DialogPreference.EditTextPreference
    </item>
    <item name="preferenceFragmentListStyle">@style/PreferenceFragmentList</item>
</style>
Run Code Online (Sandbox Code Playgroud)

android android-appcompat android-support-library android-settings

9
推荐指数
1
解决办法
8638
查看次数

Android:如何在首选项屏幕中禁用保留的图标空间

将 SDK 更新到版本 28 (Android Pie) 后,我在首选项屏幕的布局方面遇到了问题。每个 PreferenceScreen 在左侧都有一个新的填充。

正如我所检查的,已经有一种方法可以将图标空间设置为 Preference 类中的保留空间。

android.support.v7.preference.Preference.setIconSpaceReserved(boolean iconSpaceReserved)
Run Code Online (Sandbox Code Playgroud)

到目前为止,该方法很好,但问题是它不适用于 PreferenceCategory。

这是否意味着 PreferenceCategory 的左侧填充不是图标空间?

android android-preferences android-layout android-support-library

9
推荐指数
2
解决办法
3398
查看次数

首选项库版本28在每个首选项的左侧创建巨大的填充

我从第27版到第28版更新了com.android.support:preference库,自从我这样做以来,每个首选项左侧都有大量的填充.它几乎就像假设那里会有图标,但我没有指定图标.见下面的截图.有没有办法摆脱这种填充?

首选项屏幕布局

android android-layout

6
推荐指数
1
解决办法
390
查看次数

PreferenceFragmentCompat 的 iconSpaceReserved 默认为 true

我已经迁移到 androidx.* 库,其中之一是新的首选项库: androidx.preference:preference:1.1.0-alpha01- 它的最新版本。

发行说明中 所述,iconSpaceReserved属性与 PreferenceCategories 无法正常工作已修复。

但看起来它默认设置为true

我已经构建了演示项目来测试它。

首选项片段

import androidx.preference.PreferenceFragmentCompat;

public class SetttingsFragment extends PreferenceFragmentCompat {
    @Override
    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
        addPreferencesFromResource(R.xml.preferences);
    }
}
Run Code Online (Sandbox Code Playgroud)

首选项.xml

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <PreferenceCategory android:title="Category 1">
        <Preference
            android:key="pref1"
            android:title="Preference 1" />
        <Preference
            android:key="pref2"
            android:title="Preference 2" />
    </PreferenceCategory>
    <PreferenceCategory
        android:title="Category 2"
        app:iconSpaceReserved="false">
        <Preference
            android:key="pref3"
            android:title="Preference 3" />
        <Preference
            android:key="pref4"
            android:title="Preference 4"
            app:iconSpaceReserved="false" />
    </PreferenceCategory>
    ...
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

首选项主题根据需要设置。

样式文件

<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
Run Code Online (Sandbox Code Playgroud)

截屏

首选项片段

app:iconSpaceReserved=false …

android android-preferences preferencefragment androidx

5
推荐指数
1
解决办法
2472
查看次数