如何使ListPreference的AlertDialog适合通过AlertDialog.Builder#setSingleChoiceItems()设置的单选按钮项?

时间:2019-02-07 20:45:42

标签: android android-preferences

我在ListPreference上遇到了一个奇怪的问题,即该对话框的对话框无法展开以适应所有可用的单选项目。而是显示滚动条,即使对话框可以完全增长以适合这两个项目。我在不兼容/不推荐使用的常规ListPreference中使用了不兼容的常规PreferenceFragment。不幸的是,目前我无法更改为兼容/支持库版本,因为这将导致巨大的重构。

请查看以下屏幕截图: ListPreference AlertDialog

对于同一PreferenceFragment中的其他设置,对话框可以很好地展开,但是这些对话框中的选项只是一行。

代码:

strings.xml

<string name="dialog_title">ListPreference AlertDialog</string>
<string name="option_one">This is option 1. The text is long on purpose to demonstrate that the dialog does not expand.</string>
<string name="option_two">This is option 2. It also helps to demonstrate that the dialog has a scroll bar instead of expanding as expected.</string>

<string-array name="options">
    <item>@string/option_one</item>
    <item>@string/option_two</item>
</string-array>

<string-array name="optionsValues">
    <item>one</item>
    <item>two</item>
</string-array>

preferencescreen.xml

<ListPreference
    android:entries="@array/options"
    android:entryValues="@array/optionsValues"
    android:key="optionsKey"
    android:title="@string/option_one" />

我的问题:

  1. 只有在滚动条无法扩展以适合单选项目的情况下,才有办法使滚动条显示在对话框的列表视图中吗?

  2. 实现此目标的最佳方法是什么?

  3. 是否可以在不使用自定义版本覆盖AlertDialog和ListPreference的情况下进行此操作?

  4. 如何解决此问题而不影响应用程序中的其他对话框?

0 个答案:

没有答案