【问题标题】:How to get size of an image from xml in android如何从android中的xml获取图像的大小
【发布时间】:2020-09-30 16:03:55
【问题描述】:

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

【问题讨论】:

  • 这能回答你的问题吗? stackoverflow.com/a/3594216/2410641
  • 是的,谢谢,它解决了这个问题。我在 OnCreate 中调用 getwidth 和 getheight 返回 0,所以我认为可能还有其他可能的方法。

标签: java android xml android-studio android-layout


【解决方案1】:

您可以使用getWidthgetHeight 在运行时获取任何视图(在本例中为constraint layout)的尺寸。
但是要小心,在使用这两种方法之前,你必须确保视图 (constraint layout) 已经创建,否则它会返回 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
        }
    });

与您的问题有关:
View's getWidth() and getHeight() returns 0
Determining the size of an Android view at runtime

【讨论】:

  • 这解决了我的问题。我在 OnCreate 中调用 getwidth 和 getheight 返回 0,所以我认为可能还有其他可能的方法。
猜你喜欢
  • 2012-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-29
  • 2018-01-24
  • 2023-03-28
  • 2016-09-21
  • 1970-01-01
相关资源
最近更新 更多