Java 如何在android中从xml获取图像大小

Java 如何在android中从xml获取图像大小,java,android,xml,android-studio,android-layout,Java,Android,Xml,Android Studio,Android Layout,我正在开发一个android应用程序,它使用图像并具有约束布局。高度和宽度的属性设置为“包裹内容”,这意味着它们不是固定的。在这张图上,我用圆圈创建了一个图形。为此,我应该知道图像的宽度和高度的精确值。如何从XML到Java获取宽度和高度的值?您可以在运行时使用和获取任何视图(在本例中为约束布局)的尺寸。 但是请注意,在使用这两种方法之前,您必须确保视图(约束布局)已经创建,否则它将返回0,这意味着您不能在onCreate中调用它们 因此,正确的方法是等待视图创建,然后获取其大小。 像这样: 创

我正在开发一个android应用程序,它使用图像并具有约束布局。高度和宽度的属性设置为“包裹内容”,这意味着它们不是固定的。在这张图上,我用圆圈创建了一个图形。为此,我应该知道图像的宽度和高度的精确值。如何从XML到Java获取宽度和高度的值?

您可以在运行时使用和获取任何视图(在本例中为
约束布局
)的尺寸。
但是请注意,在使用这两种方法之前,您必须确保视图(
约束布局
)已经创建,否则它将返回0,这意味着您不能在
onCreate
中调用它们
因此,正确的方法是等待视图创建,然后获取其大小。 像这样:

创建此方法

public static void runJustBeforeBeingDrawn(final View view, final Runnable runnable) {
final OnPreDrawListener preDrawListener = new OnPreDrawListener() {
    @Override
    public boolean onPreDraw() {
        view.getViewTreeObserver().removeOnPreDrawListener(this);
        runnable.run();
        return true;
    }
};
view.getViewTreeObserver().addOnPreDrawListener(preDrawListener); 
}
然后在需要获取尺寸时调用它

runJustBeforeBeingDrawn(yourView, new Runnable() {
        @Override
        public void run() {
            //Here you can safely get the view size (use "getWidth" and "getHeight"), and do whatever you wish with it
        }
    });
与您的问题相关:


这是否回答了您的问题?是的,谢谢,它解决了问题。我在OnCreate中调用getwidth和getheight,返回0,所以我认为可能还有其他方法可以实现。这解决了我的问题。我在OnCreate中调用getwidth和getheight,返回0,所以我认为可能还有其他方法可以实现它。