Tôi có RecyclerView với Chế độ xem con có thể mở rộng, khi ViewGroup con được nhấp vào nó làm tăng lượng lượt xem làm tăng chiều cao ViewGroup từ 0 đến chiều cao viewgroup đo được, như gif sau :Android RecyclerView cuộn mượt mà để xem hình động đó có chiều cao của chúng
vấn đề là: tôi gọi smoothScrollToPosition trên recyclerView, nó trơn tru di chuyển đến vị trí xem, nhưng nó coi chiều cao xem hiện tại, mà vẫn chưa được mở rộng, trong gif trên i' m chạm vào dưới xem của recyclerview, mà không di chuyển đến vị trí vì xem đã được nhìn thấy, nhưng khi tôi chạm một lần nữa (gọi mịn scrolltoposition một lần nữa) nó di chuyển khung nhìn đến đúng vị trí, vì khung nhìn đã được mở rộng.
Có phương pháp nào để di chuyển chế độ xem để phía trên cùng của màn hình hoặc chỉ cần di chuyển để làm cho nội dung hiển thị?
Đối với tài liệu tham khảo: Đây là phương pháp được gọi là để thổi phồng các quan điểm:
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);
}
Và đây là phương pháp của tôi để mở rộng:
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;
}
Và các hình ảnh động:
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;
}
}
Tôi đã làm điều này, nhưng tôi muốn di chuyển trong khi xem được hiệu ứng động, cách tiếp cận của tôi là để nghe thêm một hình ảnh động để kiểm tra xem đáy Y xem là ra khỏi RecyclerView, sau đó gọi smoothscrollby cho giá trị của các điểm ảnh ra, nhưng tôi không quản lý làm thế nào để điều này –
Được rồi vì vậy bạn muốn hình ảnh động bith parallely – Mann
Tôi nghĩ rằng bạn phải "giả" chiều cao của xem để giả vờ một cái nhìn cao hơn – Mann