Android 데이터 바인딩 및 BindingAdapter 를 사용하여 ImageView의 비트 맵을로드하는 비트 맵에 바인딩합니다.
@BindingAdapter("imageName")
public void bind(ImageView imageView, String imageName) {
...
int width = imageView.getWidth();
int height = imageView.getHeight();
...
}
width
그리고 둘 다 height
0이며 내 연구와 수많은 SO 게시물에서 이러한 메서드를 너무 일찍 호출하고 레이아웃이 아직 그려지지 않았 음을 이해합니다.
하지만 BindingAdapter를 사용하고 싶을 때 실제로 코드를 다른 메서드로 이동할 수 없습니다. 뷰의 측정 값을 얻거나 바인딩 프로세스를 연기하는 다른 방법이 있습니까?
이것을 사용하십시오
view.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
view.removeOnGlobalLayoutListener(this);
int width = imageView.getWidth();
int height = imageView.getHeight();
}
});
이것은 지연을 추가하는 것보다 낫습니다. 그려진 것을보고 리스너를 제거 할 때 실행되므로 memorylake가 없습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다