안드로이드 자바코드로 레이아웃 사이즈 변경하기
Change layout size with Android Java code
레이아웃 사이즈는 xml에서 변경할 수도 자바코드로 변경할 수 있다.
그런데 나는 여태 xml에서만 변경하였고, 어떠한 이벤트가 발생하였을 때 사이즈 변경할 일이 없어서
자바코드로 사이즈 변경을 모르고 있었다.
그런데 리사이클러뷰로 만든 항목을 클릭시 더 많이 보여줘야할 이벤트발생을 해야할 때가 있었다.
그래서 구글링을 통해 자바 코드로 레이아웃 사이즈 변경을 배웠다.
The layout size can also be changed from xml to Java code.
But I have changed it only in xml, and when an event occurs, I do not have to change the size.
I wasn't aware of the size change with Java code.
However, there were times when you had to create events that you had to show more when you clicked on items made with a re-cycle view.
So I learned to change layout size with Java code through Google.
movie_All.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
movie_ReviewList.setHasFixedSize(true);
//layoutManager = new LinearLayoutManager(getApplicationContext());
movie_ReviewList.setLayoutManager(layoutManager);
if (movie_All_Check == false) {
// LinearLayout.LayoutParams param = new LinearLayout.LayoutParams
// (LinearLayout.LayoutParams.MATCH_PARENT,
// LinearLayout.LayoutParams.MATCH_PARENT);
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams
(LinearLayout.LayoutParams.MATCH_PARENT,
260 * 5);
movie_ReviewList.setLayoutParams(param);
movie_All_Check = true;
Toast.makeText(MainActivity2.this, "open~!!", Toast.LENGTH_LONG).show();
} else if (movie_All_Check != false) {
movie_ReviewList.getLayoutParams().height = 260;
movie_ReviewList.setLayoutParams(movie_ReviewList.getLayoutParams());
// movie_ReviewList.requestLayout();
movie_All_Check = false;
Toast.makeText(MainActivity2.this, "short~!!", Toast.LENGTH_LONG).show();
}
}
});
위 코드는 부끄럽게 구글링을 통해 내가 짜본 코드이다.
처음엔 클릭 시 값이 아닌 MATCH_PARENT로 해놓았지만 위 공간까지 다 차지해버려서 포기했다.
구글링을 통해 또 알아보았지만 부모 레이아웃이 LinearLayout인데 위에서 이미 차근차근 자리를 차지해서 그런다고 함.
다른 방법으로 리사이클러뷰에 들어가는 하나의 뷰의 사이즈를 정해 놓고
클릭 시 몇개까지 보여줄 건지 간단한 계산으로 코드화 해보았다.
결국 Param값으로 조절하는건데 일단 동작은 한다.
그런데 간과한것이
리사이클러뷰는 메모리 낭비를 줄이기위해 보여주지 않은 뷰는 삭제하고
보여지는 뷰를 다시 만들어서 재활용하는 개념인데
저렇게 할 경우...메모리 낭비가 심해진다고 한다. 일단은 다 보여줘야 하니까..
그리고 지금은 몇개 없어서 느려지지 않지만 수가 많아진다면 메모리 낭비가 심해진다고 한다.
그래서 클릭시 새로운 레이아웃을 보여줘서 거기서 처리하는 것이 맞다고 한다.
The above code is a code that I've compiled through Google.
At first, it was MATCH_PARENT, not the value when clicked, but it took up all the space above and gave up.
I found out through Googleing again that the parents' layout is LinearLayout, but they already occupy the top spot.
In other ways, you can size one view into the RecycleView
I coded the number of numbers I would like to show when I click on it.
After all, it's adjusted to Param's value, but it's working.
But what I'm not sure about is what I'm saying.
To reduce memory waste, the RecycleView deletes the views that are not shown.
If you do that...It is said that memory is becoming more wasteful. I have to show you everything for now.
And now, there are a few, so it doesn't slow down, but if there are more, it can lead to more memory waste.
So, when you click, you show a new layout, so it's right to deal with it there.