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