首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >视图的getWidth()和getHeight()返回0

视图的getWidth()和getHeight()返回0
EN

Stack Overflow用户
提问于 2013-08-16 16:22:33
回答 5查看 47.6K关注 0票数 21

我看过类似的问题,并尝试了他们的解决方案,但这对我来说不起作用。我正在尝试读取imageViewwidth,但它返回0。代码如下:

代码语言:javascript
复制
public class MainActivity extends Activity {
private ImageView image1;   
float centerX,centerY;
private ImageView image2;
private boolean isFirstImage = true;

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.rotate);
    image1 = (ImageView) findViewById(R.id.ImageView01);
    image2 = (ImageView) findViewById(R.id.ImageView02);
    image2.setVisibility(View.GONE);

    if (isFirstImage) {
        applyRotation(0, 90);
        isFirstImage = !isFirstImage;
    }   
}   

private void applyRotation(float start, float end) {

    centerX=image1.getWidth()/2.0f;
    centerY=image1.getHeight()/2.0f;
    final Flip3dAnimation rotation =

    new Flip3dAnimation(start, end,centerX , centerY);
    rotation.setDuration(500);
    rotation.setFillAfter(true);
    rotation.setInterpolator(new AccelerateInterpolator());
    rotation.setAnimationListener(new DisplayNextView(isFirstImage, image1,
            image2));

    if (isFirstImage)
    {
        image1.startAnimation(rotation);
    } else {
        image2.startAnimation(rotation);
    }
}
}

有人能帮我吗?谢谢

EN

回答 5

Stack Overflow用户

发布于 2014-09-30 08:22:33

您应该使用:image1.getLayoutParams().width;

票数 17
EN

Stack Overflow用户

发布于 2013-08-16 16:32:07

代码语言:javascript
复制
public class GETImageView extends ImageView {

public GETImageView (Context context, AttributeSet attrs) {
    super(context, attrs);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    Drawable d = getDrawable();

    if (d != null) {
        int width = MeasureSpec.getSize(widthMeasureSpec);
    }
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}

ImageView尚未绘制图像,因此不返回宽度或高度。你可以使用一个子类来获得图像视图的宽度。

这里有一些链接为您提供了另一种简单方法:

How to get the width and height of an android.widget.ImageView?

How to get the width and height of an Image View in android?

Android ImageView return getWidth, getHeight zero

希望这能对你有所帮助。

票数 5
EN

Stack Overflow用户

发布于 2014-04-07 13:22:36

您可以对ImageView image1使用OnGlobalLayoutListener,这样就可以获得layout...as中视图所占用的确切宽度和高度

代码语言:javascript
复制
image1 = (ImageView) findViewById(R.id.ImageView01);
        ViewTreeObserver viewTreeObserver = image1.getViewTreeObserver();
        viewTreeObserver
                .addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
                    @Override
                    public void onGlobalLayout() {
                        if (isFirstImage) {
                            applyRotation(0, 90);
                            isFirstImage = !isFirstImage;
                        } 
                        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN)
                            image1.getViewTreeObserver()
                                    .removeOnGlobalLayoutListener(this);
                        else
                            image1.getViewTreeObserver()
                                    .removeGlobalOnLayoutListener(this);
                    }
                });
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18268915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档