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

为此,我使用CheckboxPreference屏幕。一切都很好,但是如果添加的描述长于2行,则摘要字段将被切断。

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

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

所以现在我想知道是否可以解决此问题。因此,如果用户需要更多信息,只需点按文本并打开帮助器,如果要切换设置,则点按复选框。

你会怎么做?如果它们起作用,我也欢迎其他想法。

最佳答案

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),因为在parentClass中使用com.android.internal.R.id.summary,它似乎无法直接访问从Java内部?希望它不仅仅是一个巧合:)

关于android - 当CheckboxPreference摘要字段不够长时,是否显示有关首选项屏幕的额外信息?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2408708/

10-10 03:48