我有一个屏幕,您可以在其中为我的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/