2015-10-20 3 views
2

Я пытаюсь создать WearableListView, аналогичный тому, который установлен в приложении настроек по умолчанию. У меня есть WearableListView, который прокручивает и анимирует каждый элемент. Все, что мне нужно сейчас, это заголовок сверху списка, который прокручивается при прокрутке списка. Это то же поведение, что и заголовок «Настройки» в приложении «Настройки».WearableListView Header

Единственный способ, который я нашел для этого, используется здесь: How to Set the Layout for topEmptyRegion, реализует WearableListView.OnScrollListener(). Затем используется метод onAbsoluteScrollChange() для установки смещения TextView, используемого в качестве заголовка. Но, согласно Android Developer References, этот метод устарел. В документации даже указано: БУДЬТЕ ПРЕДУПРЕЖДЕНЫ НЕ ИСПОЛЬЗУЙТЕ ЭТО Это может привести к неправильным значениям при изменении содержимого RecyclerView.

Я хотел бы знать, нашел ли кто-нибудь еще способ реализовать заголовок, который ведет себя таким образом, который не устарел. Возможно, что-то, что я пропустил в документации Android Wear?

EDIT:

Я пытался так или иначе реализовать этот метод. Как выясняется, WearableListView.setOnScrollListener() не принимает new WearableListView.OnScrollListener(). Вместо этого он попросил своего родителя RecyclerView.OnScrollListener, который не имеет метода onAbsoluteScrollChange(). У него есть метод onScrolled(), который я пытался реализовать. Как оказалось, это полностью отменяет прослушиватель прокрутки по умолчанию для WearableListView и делает его таким, чтобы центрированный элемент мог находиться вне центра. Определенно не тот эффект, который я искал.

ответ

3

С OnScroll() не рекомендуется, вы можете быть в состоянии сделать то же самое, реализовав, что в вашем слушателю:

@Override 
public void onScroll(int scroll) { 
    header.setY(header.getY() - scroll); 
} 

header где является компонентом заголовка.

EDIT: Убедитесь, что вы используете WearableListView.addOnScrollListenerнеWearableListView.setOnScrollListener()

+0

Я на самом деле пытался реализовать что-то подобное (я редактировал свой вопрос, чтобы отразить это), и это не дало результатов, которые я искал. – Bryan

+0

Вам необходимо использовать WearableListView.addOnScrollListenet (WearableListView.OnScrollListener), а затем переопределить то, что я предложил в своем решении, и это должно работать. –

+0

Вау, я использовал 'setOnScrollListener()' вместо 'addOnScrollListener()' Я неправильно читал. Это прекрасно работает, спасибо. Надеюсь, вы не возражаете, я отправил вам ответ, чтобы это отразить. – Bryan