2016-03-09 5 views
0

Я хочу добавить функциональность pull-to-refresh к элементам ящика экземпляра MaterialDrawer. Обычно это можно сделать с помощью поддержки libs SwipeRefreshLayout, которая уже предоставляет эту функциональность, но я не смог найти хороший способ интегрировать ее в MaterialDrawer.Как добавить функцию SwipeRefreshLayout в MaterialDrawer

Существует функция-строитель под названием withDrawerLayout, но эта функция ожидает макета, на самом деле имеет DrawerLayout как свой корневой элемент - это, очевидно, не поможет в моем случае.

У кого-нибудь есть пример или идея о том, как это сделать?

+0

У вас также есть заголовок в вашем ящике? Вы должны помнить, что SwipeRefreshLayout будет полной высотой ящика и покажет перезагрузку сверху. – mikepenz

+0

Yup, это компромисс, который я ожидал, и я готов принять его. Фактически, механизм обновления не только обновит элементы меню, но и другие вещи, такие как изображения заголовков и приложений, так что это не так, вытащить все это. – Strayer

ответ

1

Это не возможно с версиями ниже 5.1.2 MaterialDrawer

Для вашего случая использования я реализовал изменение, которое позволяет перезаписать material_drawer_recycler_view.xml макет, и иметь дополнительный вид вокруг него.

Так, чтобы получить SwipeRefreshLayout сделать следующее:

  1. обновление для MaterialDrawer V5.1.2
  2. создать макет под названием material_drawer_recycler_view.xml в проекте
  3. добавить SwipeRefreshLayout

    <android.support.v7.widget.RecyclerView 
        android:id="@+id/material_drawer_recycler_view" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:scrollbars="vertical" /> 
    

  4. Доступ к SwipeRefreshLayout

    SwipeRefreshLayout SRL = (SwipeRefreshLayout) result.getSlider() findViewById (R.id.material_drawer_swipe_refresh).

Теперь вы можете использовать его как любой другой SwipeRefreshLayout

+0

Майк, спасибо! Не хотел злоупотреблять проблемой трекера для вопроса снова, не ожидал такого быстрого решения здесь, на StackOverflow :) Не сможет реализовать это до следующего месяца из-за праздников, но это сразу же после моего todo список. – Strayer

+0

Хорошо, отлично;). Нет проблем. Вам повезло, что я проверил тег «materialdrawer»;) – mikepenz