2015-05-12 24 views
11

Włączam animację (rozwijanie i kontraktowanie) do domyślnego rozwijanego listview z Androidem przy użyciu tego https://github.com/idunnololz/AnimatedExpandableListView/blob/master/src/com/idunnololz/widgets/AnimatedExpandableListView.java.Rozbudowany zestaw listviewselectionod Top z animacją i padding

Jednak jedynym ograniczeniem, które napotykam, jest przeniesienie obecnego rozwiniętego kliknięcia na górę.

Próbowałem setSelectionFromTop(groupPosition, 0)

Oto pytanie:
- Jak dodać animację do doprowadzenia go do góry?
- Jak ustawić go na górze do określonej wysokości. Powiedzmy poniżej 10px od góry.

Wszelkie wskaźniki byłyby niesamowite.

Uwaga: Rozwiązanie powinno działać od 14 sdk i wyżej.

+0

Wyjazd smoothScrollToPosition http://stackoverflow.com/questions/3503133/listview-scroll-to-selected-item – Andrew

+0

@Andrew szukam do niego. tnx. – amalBit

Odpowiedz

1

To z pewnością zadziała z biblioteką, której używałeś, zmęczony od siebie, daj mi znać, że potrzebujesz próbki.

long packedPosition = mListView.getPackedPositionForGroup(groupPosition); 

final long flatpostion = mListView.getFlatListPosition(packedPosition); 



expandableListView.expandGroupWithAnimation(groupPosition); 



new Handler().postDelayed(new Runnable() { 

    @Override 

    public void run() { 

     getActivity().runOnUiThread(new Runnable() { 

      @Override 

      public void run() { 

       mListView.smoothScrollToPositionFromTop((int) flatpostion, HomeActivity.LIST_HEADER_HEIGHT, 200); 

      } 

     }); 

    } 

}, 300); 
2

Wszelkie wskazówki byłyby niesamowite.

Można użyć android-advancedrecyclerview. Sam widok recyklingu to potężny widget, który ma wiele funkcji, ale na twoje pytanie możesz spojrzeć na MyExpandableItemAdapter.java.

  • Jak dodać animację do doprowadzenia jej na szczyt?

public void scrollToPosition (int position)

public void smoothScrollToPosition (int position)

  • Jak doprowadzić go do góry do określonej wysokości. Powiedzmy poniżej 10px od góry.

public void scrollBy (int x, int y)

public void smoothScrollBy (int dx, int dy)