setImageBitmap()
을 대체하는 ImageView
의 하위 클래스가 있는데, 주어진 비트 맵을 가로 채서 뷰의 종횡비에 맞게 채울 수 있습니다. 이를 위해보기의 크기를 알아야하지만 getWidth()
및 getHeight()
은 모두 setImageBitmap()
동안 0을 반환합니다. setImageBitmap()
동안 변화가 없기 때문에오버 라이드 된 setImageBitmap()에서 ImageView의 크기를 얻는 방법
private Bitmap pending_bitmap;
@Override public void setImageBitmap(Bitmap b) {
if (getWidth() == 0 || getHeight() == 0) pending_bitmap = b;
else applyBitmap(b);
}
@Override public void onSizeChanged(int w, int h, int old_w, int old_h) {
if (pending_bitmap != null) {
applyBitmap(pending_bitmap);
pending_bitmap = null;
}
}
private void applyBitmap(b) {
// Do some stuff that needs getWidth() and getHeight()
super.setImageBitmap(b);
}
은 그러나, 지금 onSizeChanged()
가 호출되지 않는 :
onSizeChanged()
가 올바른 크기로 호출되는 것을 본 후, 나는 그때까지 처리를 지연 시도했다.
크기를 강제로 조정하기 위해 null
에서 super.setImageBitmap()
으로 전달하려고했습니다. 모두 사용할 수 없습니다. 거기에 어딘가 내 처리를 할 pending_bitmap
가져올 수 있습니다 또는 비트 맵을 두 번 적용하지 않고 onSizeChanged()
호출 할 수있는 몇 가지 방법이 있나요?
편집 :이 또한 무시 setImageBitmap()
에서 requestLayout()
를 호출했습니다. 아무것도하지 않는 것 같습니다.
시도해 보셨습니까? – pskink
@pskink : 지금은 그렇습니다. 질문이 수정되었습니다. –
btw 무엇을 달성하기를 원하십니까? 어쩌면 짧은 트랙이 있을까요? – pskink