【问题标题】:android get drawable area in onCreate methodandroid在onCreate方法中获取可绘制区域
【发布时间】:2011-09-03 00:06:58
【问题描述】:

如果我的布局在高度和宽度上都有 fill_parent,有没有办法在 onCreate 方法中获取他的高度和宽度?如果没有,他的尺寸什么时候可用?我需要这个,因为我需要在运行时添加一些视图,并且我需要知道布局中有多少视图。

【问题讨论】:

    标签: android layout dimensions


    【解决方案1】:

    你可以这样做:。 假设你在 onCreate 方法中有布局视图

         layout.post(new Runnable() {
            @Override
              public void run() {
                height= getHeight();
                width=getWidth();        
                //pupulate other views now that you know the parent size     
                }
            }
      });
    

    【讨论】:

    • 我想到了这个解决方案,但是这个 runnable 什么时候执行?是否会在绘制所有视图之前执行?如果它会在绘制完所有视图之后执行,那么通知对象不是一个简单的解决方案,所以我可以使用这个值......它必须是一个简单的方法......
    • 接受了我的回答,但在您的 cmets,您似乎没有找到解决方案。这是一次点击失败并需要更多帮助还是有效?
    【解决方案2】:

    你可以使用onSizeChanged方法来获取计算出来的信息,但这也可能有助于至少获取显示的尺寸。

    Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
    int width = display.getWidth(); 
    

    您可能会发现这很有用:

    when is onSizeChanged() called?

    【讨论】:

    • onSizeChanged 是一个视图方法。我需要将 ImageView 添加到我的屏幕上,我不制作服装布局。和 display 会给你屏幕的整个高度。我只需要可绘制区域,在标题栏和通知区域你不能绘制视图
    • fill_parent 并不总是意味着整个屏幕。事实上,自从有了通知栏之后,几乎从来没有。
    • @weakwire - 您可以了解大小,以根据显示器的大小计算要放置多少个视图,因为可以忽略通知栏的舍入。
    • @gabi - 根据您需要获得显示尺寸的完美程度,然后在 onCreate 中执行此操作就足够了。如果您允许它切换到横向/纵向模式,您也会遇到问题,因为可视区域会发生变化。
    猜你喜欢
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多