@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.galleryfragment,container,false);
view.addOnLayoutChangeListener(this::onLayoutSet);
return view;
}
@Override
public void onStart() {
super.onStart();
View view=getView();
gallery=(ViewGroup)view;
//Log.i("사이즈",gallery.getMeasuredWidth()+""); 0 출력
gallery.addView(new Button(getContext())); //됨
gallery.addView(new Button(getContext())); //됨
}
private void onLayoutSet(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom){
Log.i("호출",getLifecycle().getCurrentState().toString()); //호출 자체는 됨
gallery.addView(new Button(getContext())); //에러는 없지만 화면 표시 안됨 (자식 getMeasuredWidth()=0)
gallery.addView(new Button(getContext())); //에러는 없지만 화면 표시 안됨 (자식 getMeasuredWidth()=0)
}
존나 간단하게 LinerLayout Horizontal로 실험해보는데 onStart때 추가하는놈은 되면서 Layout 크기 정해진 시점에서 추가하면 안됨
저 시점에서 LifeCycle찍었을땐 Resume 구간 인데 뭐가 문제지..
뷰 크기가 바뀐 순간 뷰 크기에 따라 행렬 나눠야되는데 조깥네
이거 하나 하자고 액티비티에 정적메소드 달아서 스크린 크기째 얻어오는것도 그렇고
post 로 추가하는거찍어보니 무한 반복되는거같아보이기는한데 (Linerlayout이니까 오른쪽으로 무한정 나감) 이래서 이걸 막아놓은건가 싶기도 하고....근데 이건 시작부분에 listener 제거만 하면 되는거잖아....?
씨바 이거 처리를 우째 해야된다
씁 boolean 하나 둬서 무한루프막고 Detach때 다시 초기화하는걸로 해결하긴했는데 너무 땜빵코드같다