相关疑难解决方法(0)

PreferenceFragmentCompat在PreferenceCategory上有填充,我无法摆脱它

所以我一直在尝试使用androidx.preference.PreferenceFragmentCompat创建一个设置活动,它一切正常.

但是由于某种原因,在偏好类别和偏好本身上都存在一些填充.我设法通过使用app:iconSpaceReserved ="false"来摆脱首选项的填充,但这似乎不适用于类别.

图片

我已经尝试了所有各种主题,PreferenceThemeOverlay.v14.Material等但它们似乎没有什么区别

这是我的一切代码!

SettingsActivity.java

import android.os.Bundle;

import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

public class SettingsActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_settings);

        Toolbar toolbar = findViewById(R.id.settings_toolbar);
        setSupportActionBar(toolbar);
        ActionBar actionBar = getSupportActionBar();
        if (actionBar != null) {
            actionBar.setDisplayHomeAsUpEnabled(true);
            actionBar.setDisplayShowTitleEnabled(false);
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

activity_settings.xml

<androidx.constraintlayout.widget.ConstraintLayout 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"
    tools:context=".SettingsActivity">

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/settings_toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            style="@style/ToolbarTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/title_settings"
            android:textColor="@color/font_dark_primary" />

    </androidx.appcompat.widget.Toolbar>

    <fragment
        android:name="com.henrytwist8gmail.fullcart.SettingsTestFragment"
        android:tag="settings_fragment"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toBottomOf="@id/settings_toolbar" />

</androidx.constraintlayout.widget.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

SettingsTestFragment.java

import android.os.Bundle; …
Run Code Online (Sandbox Code Playgroud)

android android-appcompat android-preferences preferencefragment androidx

33
推荐指数
4
解决办法
4742
查看次数

自定义首选项,targetSdkVersion ="11":缺少缩进?

我有几个自定义DialogPreference实现,例如这个:

package apt.tutorial;

import android.content.Context;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import android.preference.DialogPreference;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.widget.TimePicker;

public class TimePreference extends DialogPreference {
    private int lastHour=0;
    private int lastMinute=0;
    private TimePicker picker=null;

    public static int getHour(String time) {
        String[] pieces=time.split(":");

        return(Integer.parseInt(pieces[0]));
    }

    public static int getMinute(String time) {
        String[] pieces=time.split(":");

        return(Integer.parseInt(pieces[1]));
    }

    public TimePreference(Context ctxt) {
        this(ctxt, null);
    }

    public TimePreference(Context ctxt, AttributeSet attrs) {
        this(ctxt, attrs, 0); …
Run Code Online (Sandbox Code Playgroud)

android android-preferences android-3.0-honeycomb

18
推荐指数
2
解决办法
4715
查看次数

由于不推荐使用Android getFragmentManager()API,还有其他选择吗?

FragmentManager已弃用.有替代方法或我现在可以做什么?

 PlaceAutocompleteFragment autocompleteFragment = (PlaceAutocompleteFragment) getFragmentManager().findFragmentById(R.id.place_autocomplete_fragment);
        autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
            @Override
            public void onPlaceSelected(Place place) {
                // TODO: Get info about the selected place.
                destination = place.getName().toString();
                destinationLatLng = place.getLatLng();
            }
            @Override
            public void onError(Status status) {
                // TODO: Handle the error.
            }
        });
Run Code Online (Sandbox Code Playgroud)

弃用警示图像

java android

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

Android:如何最大化PreferenceFragment宽度(或摆脱保证金)?

Android设置屏幕截图

FragmentsBC截图

如果您查看Android设置屏幕截图或FragmentsBC屏幕截图,PreferenceFragment中会有保证金.你怎么能摆脱它?

我尝试将PreferenceFragment宽度设置为fill_parent,但没有运气.

android preference

14
推荐指数
3
解决办法
1万
查看次数

Android:如何在偏好中调整边距/填充?

在我要求删除PreferenceActivity/PreferenceFragment的填充之前:

Android:如何最大化PreferenceFragment宽度(或摆脱保证金)?

这次我无法在标题文本之前调整边距/填充.(见下图).

在此输入图像描述

有人有任何想法吗?

android margin preference

14
推荐指数
3
解决办法
2万
查看次数

如何在Android上的首选项中处理长文本?

背景

我正在创建一个具有一些设置的应用程序,我想使用内置的PreferenceActivity或PreferenceFragment来完成工作

问题

一些偏好有一个很长的标题,我无法缩短,而且我认为如果我本地化应用程序(翻译成多种语言),我将面临同样的问题(例如在德语中,有时会有很长的单词).

你在这种情况下得到的只是文本的开头,然后是"......"(或更少的点,这对btw没有多大意义).

例:

在此输入图像描述

我试过的

我知道PreferenceActivity从ListActivity扩展,所以我可以将其适配器更改为我想要的任何东西,但这将删除它的工作方式.

我也知道我可以从每个类型的首选项类扩展,使用"onCreateView"方法来引用创建的视图,然后访问它的子类,但这很奇怪,不是吗?我的意思是,它几乎就像假设它永远不会改变它的外观.

编辑:这是我尝试过的示例代码:

从每个首选项类扩展,并在每个首选项中使用:

...
@Override
protected View onCreateView(final ViewGroup parent)
  {
  final View view=super.onCreateView(parent);
  ViewUtil.handlePreferenceTitleTextView(view);
  return view;
  }
...

//ViewUtil.java :

private void handlePreferenceTitleTextView(final View v)
  {
  final TextView titleTextView=(TextView)v.findViewById(android.R.id.title);
  if(titleTextView!=null)
    titleTextView.setSingleLine(false);
  }
Run Code Online (Sandbox Code Playgroud)

它有效,但我不认为这是推荐的,因为Google可能会改变首选项视图的工作方式.

这个问题

如何在Android上的首选项标题中处理长文本?

是否有可能使它具有椭圆形/选框(以便它将有一个动画来显示所有内容)?或者也许自动适合字体大小?或者将其设置为自动换行?还是一个水平scrollView,允许用户滚动阅读文本的其余部分?

是否可能有如何处理此类案件的惯例?也许长按一下可以看到整个文本的吐司/对话框?

android textview longtext preferenceactivity android-preferences

12
推荐指数
2
解决办法
3065
查看次数

如何删除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中不需要的空格

在我的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>
Run Code Online (Sandbox Code Playgroud)

并实现了相应的PreferenceFragmentCompat类:

class SettingsFragment : PreferenceFragmentCompat() {

    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
        setPreferencesFromResource(R.xml.settings, rootKey)
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用的依赖:

implementation "com.android.support:preference-v7:28.0.0"
Run Code Online (Sandbox Code Playgroud)

以及承载以下内容的布局代码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>
Run Code Online (Sandbox Code Playgroud)

一切都很好,除了每个偏好左侧有一个巨大的空白区域:

在此输入图像描述

这个问题的原因是什么,我该如何预防呢?

编辑:

似乎问题是图标的空间被保留,即使我们没有使用偏好条目的图标. …

android sharedpreferences preferencefragment

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

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
查看次数

AndroidX 偏好屏幕偏离中心

我的应用程序中有一个首选项屏幕,它偏离了中心,标题文本或数据不是从下图所示的左侧开始。我正在初始化设置片段。我没有应用任何视觉变化或添加任何特殊属性。

父活动中没有填充或边距。我还有一个回收器视图,它在应用程序中显示得非常好,但它偏离了中心

这是我的首选项.xml 文件

<androidx.preference.PreferenceScreen
xmlns:app="http://schemas.android.com/apk/res-auto">

    <PreferenceCategory
        app:title="General">
        <Preference
            app:key="feedback"
            app:title="Send Feedback"
            app:summary="Report technical issues or suggest new features"/>
        <Preference
            app:key="about"
            app:title="About Us"/>
    </PreferenceCategory>


    <PreferenceCategory
        app:title="Customize">

        <SwitchPreferenceCompat
            app:key="@string/key_darkTheme"
            app:title="Enable Dark Theme"
            app:summary="Enable dark theme throughout app (Restarts App Automatically)"
            app:defaultValue="false"/>

        <ListPreference
            app:key="@string/key_font"
            app:title="Set Font Size"
            app:entries="@array/settings_list_preference_font"
            app:entryValues="@array/settings_list_preference_values"
            app:defaultValue="2"
            app:summary="Set font size according to your liking"/>


    </PreferenceCategory>

</androidx.preference.PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

偏好屏幕偏离中心

android android-layout android-xml android-support-library androidx

4
推荐指数
1
解决办法
991
查看次数