개발하다보니 NestedScrollView 안에 RecyclerView 를 넣게되었는데
스크롤 동작은 정상적으로 작동되었지만
RecyclerView부분이 화면밖으로 나갔을 떄 그쪽까지 스크롤이 되지 않거나
아에 뷰가 안생기는 현상을 확인하였다
대충 아래와같은 그림이었는데...
///////////////////////////////////////////
<LinearLayout>
<android.support.v4.widget.NestedScrollView>
<LinearLayout>
<android.support.v7.widget.CardView>
</android.support.v7.widget.CardView>
<android.support.v7.widget.RecyclerView>
</android.support.v7.widget.RecyclerView>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</LinearLayout>
/////////////////////////////////////////////
생각해보니 RecyclerView의 height길이가 고정이 아니라 NestedScrollView의 전체길이에
포함되지 않아 RecyclerView 부분이 잘린것 같다고 생각이 들었다.
그래서 RecyclerView의 height 속성에 고정으로 박아주니 그 크기만큼 잘 표시되었다.
(ex)
<android.support.v7.widget.RecyclerView
android:id="@+id/rv_lost_comment_list"
android:layout_width="match_parent"
android:layout_height="300dp"
/>
하지만 나같은 경우는 리사이클뷰에 아이템이 없을수도있고, 많이있을수도 있는데
저렇게 300dp로 고정하게되니 없어도 무조껀 저만큼 생기게되어 옮바른 해결방법이 아니라 생각하였다.
/////////////////////////////////////////////////////////
그래서 찾게된 해결방법은
xml에서가 아니라 java소스상에서 리사이클뷰에 들어갈 아이템 개수가 정해지면
그때 리사이클뷰의 height에 고정 길이를 부여하면 될것같아서 해보았다.
private void resizeCommentList(int item_size){
ViewGroup.LayoutParams params = rvLostCommentList.getLayoutParams();
params.height = 200 * item_size;
rvLostCommentList.setLayoutParams(params);
}
//여기서 rvLostCommentList 는 findviewbyid로 잡은 리사이클뷰
이런식으로 아이템 갯수가 정해지면
(아이템 갯수) X (아이템 하나에 해당하는 예상 고정 길이)
해서 나온 값을 리사이클뷰의 height 속성에 부여하게 되면
아이템 갯수에 따라 길이가 잘 조정되었다.
'공부 > Android' 카테고리의 다른 글
(android) EditText focus 키보드 자동 실행 (0) | 2016.07.13 |
---|---|
(android) NetworkImageView default image (0) | 2016.07.07 |
(RecyclerView) match_parent가 안먹는 에러 (0) | 2016.07.01 |
(에러) Multiple entries with same key (0) | 2016.06.21 |
(android) button array onclick [많은 버튼을 배열로 만들기] (0) | 2016.06.06 |