关于getWidth(),getHeight()的一个坑

有时,我们为了好的布局,会在程序中,动态地获得一个View的宽高。在做一个练习时,我直接将

int width = gridLayout.getWidth()/10;
int height = gridLayout.getHeight()/10;

这两句放在了onCreate()中:  

     @Override
     protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getEveryView();      
        int width = gridLayout.getWidth()/10;
        int height = gridLayout.getHeight()/10;
}

这样,width和height的值为0。

这里,必须注意到,我们如果把这两个函数中,当前的Activity都还没有Create完成,自然宽高均是未定的。所以返回值为0。

然后,我将获取宽高的方法放在onPause中执行

    @Override
    protected void onPause() {
        super.onPause();
        int width = gridLayout.getWidth();
        int height = gridLayout.getHeight();
        Toast.makeText(getApplicationContext(),width+","+height,Toast.LENGTH_SHORT).show();
    }

能够成功地获得宽高。

接着,我将获得宽高的方法放在onResume中执行

    @Override
    protected void onResume() {
        super.onResume();
        int width = gridLayout.getWidth();
        int height = gridLayout.getHeight();
        Toast.makeText(getApplicationContext(),width+","+height,Toast.LENGTH_SHORT).show();
    }

Activity在第一个生命周期时,无法获得宽高。当我Stop之后,再回来,onResume正常获取了宽高。

最后,我将获得宽高的方法放在Button的OnClickListener中

        testButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int width = gridLayout.getWidth()/10;
                int height = gridLayout.getHeight()/10;
                Toast.makeText(getApplicationContext(),width+","+height,Toast.LENGTH_SHORT).show();
                imageView1.setImageBitmap(decodeSampledBitmapFromResource(getResources()
                        ,R.drawable.ic_launcher_big
                        , width
                        ,height));
            }
        });

获得成功。

在此记录,以上。

时间: 2024-10-13 16:54:08

关于getWidth(),getHeight()的一个坑的相关文章

踩到Framework7 Photo Browser 的一个坑

最近在做的项目用了Framework7前端框架,功能确实比较强大!但这两天遇到一个坑,希望我的这点收获能给遇到这个问题的朋友一点帮助. 在使用Photo Browser 的时候,图片下方想放一个“点赞”的按钮,耐何就死活无法响应鼠标的点击事件(click tap都不行).怀疑被父级元素拦截了,反复各种折腾就是没效果! 最后都要放弃的时候,都准备移除“点赞”功能了,无意中发现.photo-browser-captions这个层有个样式是 pointer-events: none; 翻了一下CSS手

PHP中逻辑运算符and/or与||/&&的一个坑

我原来以为PHP中的and和&&是一样的, 只是写法上为了可读性和美观, 事实上我错了. 这里面深藏了一个坑! 看以下代码: $bA = true; $bB = false; $b1 = $bA and $bB; $b2 = $bA && $bB; var_dump($b1); // $b1 = true var_dump($b2); // $b2 = false $bA = false; $bB = true; $b3 = $bA or $bB; $b4 = $bA ||

Android 和Java API的一个坑:SimpleDateFormat

今天上班遇到这么一个意料之外的异常: 出问题的代码是这样的(已去除上下文信息): Log.i(LOG_TAG, new SimpleDateFormat("YYYY-MM-dd HH:mm:ss", Locale.CHINA) .format(System.currentTimeMillis())); 反复检查,感觉没有问题,于是新建一个Java Project,直接输出同样的代码: public class Main{ public static void main(String[]

关于UWP数据绑定的一个坑 x:bind修改为binding

<Page    x:Class="AlbumCoverMatchGame.MainPage"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    xmlns:local="using:AlbumCoverMatchGame&

【Java记录】try-with-resources的一个坑

[Java记录]try-with-resources的一个坑 今天处理 AsynchronousFileChannel 时候的一个问题,代码如下: public static void main(String[] args) throws Exception { String filePath = "/home/xe/git/osc/JavaNote/Lang/data/Test.java"; ExecutorService executorService = Executors.ne

openlayer关于feature中的一个坑

在Openlayer中使用Feature时候,有时候我们需要使用图片来做Maker,今天就讲我在这碰到的一个坑. 这一个除了黄色部分其他部分透明的png图片. 将其加入地图中后. 我们要注册一个Feature的Select事件. 结果,点击中间透明部分时,竟然没有信息提示,只有点击黄色部分时候才有提示!这不科学!!! 后来,为了证明是不是图片中间透明的原因.我请美工妹妹帮我弄了另一张图. 就是它了.替换图片后,结果是点击圆里都行!这不科学啊! 好了,这是一个坑,写下来纪念. 有关于openlay

记学习PHP掉进去的第一个坑

从前几天开始刚开是学习PHP,就经历了一个坑,让人确实挺郁闷的,主要是因为开发环境的问题. 直接切入正题. =================================================================================================== 实验环境:PHPStorm2016 + Xampp 在学习使用表单的post方法接受数据一节时,怎么也接受不到数据,不知道怎么回事.代码如下 <form name="form1"

MySQL JDBC的queryTimeout的一个坑

遇到一个MySQL JDBC的queryTimeout的坑,比较恶心,算是它的BUG,也可以不算,^_^,为啥这么说?看一下下面的解释: 现象: 用同一个Connection执行大批量SQL的时候,导致了OOM现象. 细节现象描述: 1.SQL是从某个存储设备上拿到的,不会直接占用大量的内存,每次只会取最多1千条数据过去,也会判定容量不超过多少M. 2.每一批SQL执行会单独创建Statement对象,执行一批SQL后,会将这个Statement关闭掉. 3.SQL语句中只有insert,没有其

bootstrap 中的静态模式的控制按钮上的一个坑

在使用modal时发现,代码:<button class="btn btn-danger" data-toggle="modal" data-target="#myModal">删除</button>,button按钮点击没有反映,经过与自带的实例对比,发现一个区别,就是type="button"没有加,真是一个坑啊 <button class="btn btn-danger"