1

我有一个屏幕,您可以在其中启用/禁用我的 Android 应用程序的模块。

为此,我使用 CheckboxPreference 屏幕。这一切都很好,但是如果添加的描述超过 2 行,汇总字段就会被截断。

假设每个模块有 4-5 行可用的描述,我想在帮助窗口中显示它。

我试图将单击事件绑定到 CheckboxPreference,但它会触发整行,因此不仅在单击复选框时,而且更多,无论您单击该行的任何位置,都会切换复选框。

所以现在我想知道这是否可以解决。因此,如果用户需要更多信息,只需点击文本,助手就会打开,如果想要切换设置,请点击复选框。

你会怎么做?我也对其他想法持开放态度,如果它们确实有效的话。

4

3 回答 3

13

Hmn今天也遇到了同样的问题。我的替代解决方案是只允许在摘要中显示更多文本。

只需创建您自己的 CheckBoxPreference 子类,如下所示:

public class CheckBoxPreferenceWithLongSummary extends CheckBoxPreference{

    public CheckBoxPreferenceWithLongSummary(Context context) {
        super(context);
    }

    public CheckBoxPreferenceWithLongSummary(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public CheckBoxPreferenceWithLongSummary(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onBindView(View view) {
        super.onBindView(view);
        TextView summaryView = (TextView) view.findViewById(android.R.id.summary);
        summaryView.setMaxLines(10);
    }
}

然后在你的 PreferenceScreen 中(我假设你使用 xml 来设置 Preference 布局 - 不确定它是否可能完全以编程方式)只需<CheckBoxPreference.../>用你的新实现替换旧的,比如<com.example.whatever.CheckBoxPreferenceWithLongSummary ... />

似乎对我来说工作得很好,尽管我不确定 findViewById(android.R.id.summary) 因为在父类中使用了 com.android.internal.R.id.summary 似乎无法直接访问从Java内部?希望这不仅仅是巧合:)

于 2010-04-11T01:01:37.110 回答
0

I found an alternative solution that fits better in my case since I needed longer summaries for different types of preferences, not only CheckboxPreferences.

  • I copied the file data/res/layout/preference.xml from the SDK to res/layout/preference_long_summary.xml in my app. (I took the one from API level 7, since it seems to work also for higher levels)
  • removed the android:maxLines attribute from the @+android:id/summary TextView
  • referenced this layout from my preferences for the preferences where I needed longer summary with android:layout="@layout/preference_long_summary"
于 2012-04-13T08:09:05.073 回答
0

您也许可以创建自己的子类,CheckboxPreference从而为您提供更多空间。

于 2010-03-09T12:55:41.373 回答