Show extra info for Preference screens when CheckboxPreference summary field is not enough long?

前端 未结 3 1077
花落未央
花落未央 2021-02-11 07:35

I have a screen where you can enable/disable modules for my Android application.

For this I use a CheckboxPreference screen. This is all good, but the summary field gets

3条回答
  •  无人共我
    2021-02-11 07:54

    Hmn had the same problem today. My alternative solution is to just allow to display more Text within the summary.

    Just create your own subclass of CheckBoxPreference that looks something like this:

    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);
        }
    }
    

    Then within your PreferenceScreen (i assume you use xml to set up the Preference layout - not sure if its even possible completely programmatically) just replace the old with your new implementation like

    Seems to work just fine for me, altough i'm not sure about the findViewById(android.R.id.summary) because in the parentClass com.android.internal.R.id.summary is used which seems to be not directly accessible from within Java? Hope its not just an coincidence :)

提交回复
热议问题