I get imageView\'s width 0. Below is code.
xml file :
well i found many many questions related that are duplicate to this question, and most of the answers were not fit for my case.
I have come up with a solution that may fit for yours as it does for me. Simply, i have created a custom ImageView and added a new callback OnSizeChangedCallback that is being called whenever the size of the view is changed to non zero values.
Here's a code sample of my own:
public class AvatarImageView extends ImageView{
private OnImageViewSizeChanged sizeCallback = null;
public AvatarImageView(Context context) {
super(context);
}
public AvatarImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public AvatarImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
if (w == 0 || h == 0) {
return;
}
else{
if(sizeCallback != null)
sizeCallback.invoke(this, w, h);
}
}
public void setOnImageViewSizeChanged(OnImageViewSizeChanged _callback){
this.sizeCallback = _callback;
if (getWidth() != 0 && getHeight() != 0) {
_callback.invoke(this, getWidth(), getHeight());
}
}
public interface OnImageViewSizeChanged{
public void invoke(ImageView v, int w, int h);
}
}
and you can simply use it as follows:
final AvatarImageView avatarIcon = (AvatarImageView) findViewById(R.id.avatarImg);
avatarIcon.setOnImageViewSizeChanged(new AvatarImageView.OnImageViewSizeChanged() {
@Override
public void invoke(ImageView v, final int w, final int h) {
// Do whatever you want with w and h which are non zero values ...
}
});
related questions: