In Views areas (header, footer, empty-text) are pluggable, this means you can write your own php logic to place whatever you want.

### Requirements

You should have read API and Tables API to get a basic knowledge how to extend views.

### Create your own area handler

The first step is to tell views: Hey i want to add a new area handler. Therefore you have to implement hook_views_data and add a new one. For example:

    function yourmodule_views_data() {
      $data['views']['collapsible_area'] = array(
        'title' => t('Collabsible Text area'),
        'help' => t('Provide collabsible markup text for the area.'),
        'area' => array(
          'handler' => 'yourmodule_handler_collapsible_area_text',
        ),
      );
      return $data;
    }

The second step is to write this handler. Therefore create a file called yourmodule_handler_collapsible_area_text.inc and add it to the .info file of your module. Then add content to your area file like this:

    class yourmodule_handler_collapsible_area_text extends views_handler_area_text {
      function render($empty = FALSE) {
        // Here you just return a string of your content you want.
        if ($render = parent::render($empty)) {
          $element = array(
            '#type' => 'fieldset',
            '#title' => t('Title'),
            '#value' => $render,
          );
          $output = theme('fieldset', $element);
          return $output;
        }
      }
    }

As on every handler you can add options so you can configure the behavior. If the area isn't shown yet in the views interface, please clear the cache :)