Mam widok RecyclerView z rozwijanymi widokami podrzędnymi, gdy kliknięto grupę podrzędną ViewGroup, powoduje ona zwiększenie liczby widoków, które podnoszą wysokość widoku od 0 do zmierzonej wysokości grupy wyświetlania, na przykład następującego po nim gifa :Android RecyclerPrzejście przewijanie do widoku animującego ich wysokość
problemem jest: Dzwonię smoothScrollToPosition na recyclerView, to gładkie przewijania do pozycji widoku, ale uzna bieżącą wysokość widoku, który nie jest jeszcze rozwinięty w powyższym gif I” m dotykając pod podglądem recyklingu, który nie jest przewijany do pozycji, ponieważ widok jest już widoczny, ale po ponownym dotknięciu (wywołanie gładkiej scrolltoposition ponownie) przewija widok do właściwej pozycji, ponieważ widok jest już rozwinięty.
Czy istnieje podejście do przewijania widoku na górę ekranu lub po prostu przewijania, aby treść była widoczna?
przypadku powołań: Jest to metoda zwana nadmuchać poglądy:
collapsible_content.removeAllViews();
for(int i = 0; i < 5; i++) {
View link_view = getLayoutInflater().inflate(R.layout.list_item_timeline_step_link, collapsible_content, false);
TextView text = (TextView) link_view.findViewById(R.id.step_link_text);
text.setText("Test");
collapsible_content.addView(link_view);
}
A to jest moja metoda, aby rozwinąć:
public void toggle() {
collapsible_content.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
Animation a;
if (mExpanded) {
a = new ExpandAnimation(collapsible_content.getLayoutParams().height, 0);
} else {
a = new ExpandAnimation(collapsible_content.getLayoutParams().height, getMeasuredHeight());
}
a.setDuration(mAnimationDuration);
collapsible_content.startAnimation(a);
mExpanded = !mExpanded;
}
a animacja:
private class ExpandAnimation extends Animation {
private final int mStartHeight;
private final int mDeltaHeight;
public ExpandAnimation(int startHeight, int endHeight) {
mStartHeight = startHeight;
mDeltaHeight = endHeight - startHeight;
}
@Override
protected void applyTransformation(float interpolatedTime,
Transformation t) {
final int newHeight = (int) (mStartHeight + mDeltaHeight *
interpolatedTime);
collapsible_content getLayoutParams().height = newHeight;
if (newHeight <= 0) {
collapsible_content setVisibility(View.GONE);
} else {
collapsible_content setVisibility(View.VISIBLE);
}
collapsible_content requestLayout();
}
@Override
public boolean willChangeBounds() {
return true;
}
}
Zrobiłem to, ale chcę, aby przewijać podczas gdy widok jest animowanie, moje podejście było dodać detektor animacji, aby sprawdzić, czy dolna Y zdania jest poza RecyclerView, a następnie call smoothscrollby podając wartość pikseli, ale nie poradziłem sobie z tym, jak to zrobić –
Okej, więc chcesz bith animacje parallely – Mann
Myślę, że musisz "podrobić" wysokość widoku, aby udawać wyższy widok – Mann