recyclerView가 나타나기 전에 측정 할 때 현재 문제가 발생합니다. "확장"애니메이션을 시작하려면 measuredHeight가 필요합니다. 내가 일하고 있어요 내가 GridLayoutManager표시되기 전에 Recyclerview를 측정하십시오.
와 RecyclerView에final int widthSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
final int heightSpec = View.MeasureSpec.makeMeasureSpec(MEASURED_SIZE_MASK, View.MeasureSpec.AT_MOST);
mGridView.measure(widthSpec, heightSpec);
int targetHeight = mGridView.getMeasuredHeight();
그것을 마이그레이션하려고
이
이전 코드에서 GRIDVIEW 위해 이루어졌다 그것은 GRIDVIEW 작업되었지만 나는 측정 방법을 호출하는 경우 recyclerView에 동일한 측정 사양을 사용하면 결과는 항상 16777215입니다. 이는 내가 생각하기에 최대 값일 수 있지만 무엇을 말할 수는 없습니다. I 그것이 다음 측정 사양으로 측정하여 화면에 렌더링되기 전에 뷰가 측정 될 수 있음을 설명 일부 포스트 반드시:
final int widthSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
final int heightSpec = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
하지만 recyclerView.getMeasuredHeight 0을 얻을 수를();
화면에 렌더링되기 전에 recyclerView의 높이를 올바르게 측정 할 수있는 방법이 있습니까?
감사합니다.
답변 해 주셔서 감사합니다. 지원되지 않는 WRAP_CONTENT가 문제를 설명 할 수 있습니다. 어떤 사람이 분명히 다음과 같이 신고했습니다. https://code.google.com/p/android/issues/detail?id=74772&. XML 레이아웃 파일에서 뷰가 팽창되어 뷰 계층에 추가됩니다. 불행히도 나는 recyclerView로 전달할 수있는 여러 어댑터가 있고 다른 항목을 표시 할 수 있으므로 어린이 높이를 알지 못합니다. 내가 항목에 사용 된 레이아웃을 검색 할 수 있다면, 그것을 부 풀릴 수 있고 그것을 측정 한 다음 gridLayoutManager 높이를 계산할 수 있습니다. 나는 그것을 시도 할 것이다. –
당신이 이미 문제를 해결 한 것을 보았습니다. 일반 솔루션이 필요한 경우 첫 번째 측정 값이 모든 공간을 차지하도록 허용 한 다음 다른 측정 값을 요청하고 다음 측정 값은 마지막 자식 좌표 (getDecoratedEnd (view))를 반환 할 수 있습니다. 어댑터 크기가 항상 0보다 큰 경우 onMeasure 호출의 #보기만으로도 충분할 수 있습니다. 다가올 릴리스에서는이 기능을 사용할 수 있습니다. – yigit
아쉽게도 뷰를 측정 할 필요가있는 확장 메소드를 처음 호출 할 때 어댑터를 작성하고 채웠습니다. 어떤 하위보기를 원할 때, recyclerview는 하위 항목을 포함하지 않습니다. 적어도 어린이보기에 대한 언급을 갖기 위해서는 적어도 한 번은 그려야한다고 생각합니다. –