当CheckboxPreference摘要字段不够长时,显示"首选项"屏幕的额外信息?

Pen*_*m10 1 android views preferences checkboxpreference

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

为此,我使用CheckboxPreference屏幕.这一切都很好,但如果添加的描述比2行更长,则摘要字段会被切断.

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

我尝试将click事件绑定到CheckboxPreference,但是这会触发整行,因此不仅在单击复选框时,还有更多,无论您在哪一行单击该复选框,都会切换.

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

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

icy*_*sor 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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