`

在onCreate方法中获取某个View的宽度和高度

 
阅读更多

有时候需要在onCreate方法中知道某个View组件的宽度和高度等信息,而直接调用View组件的getWidth()、getHeight()、getMeasuredWidth()、getMeasuredHeight()、getTop()、getLeft()等方法是无法获取到真实值的,只会得到0。这是因为View组件布局要在onResume回调后完成。下面提供实现方法,onGlobalLayout回调会在布局完成时自动调用

 

final LinearLayout imageViewContainer = (LinearLayout)findViewById(R.id.crop_photo_image_view_container);
        imageViewContainer.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
            boolean isFirst = true;//默认调用两次,这里只让它执行一次回调
            @Override
            public void onGlobalLayout() {
                if (isFirst) {
                    isFirst = false;
                    //现在布局全部完成,可以获取到任何View组件的宽度、高度、左边、右边等信息
                    Log.i("CDH", "Global W:"+imageViewContainer.getMeasuredWidth()+"  H:"+imageViewContainer.getMeasuredHeight());
                }
            }
        });
 

 

分享到:
评论
5 楼 u012678420 2016-02-17  
 
4 楼 newmandirl 2013-10-05  
挺好的,不过楼主貌似这样子会更好:
final LinearLayout imageViewContainer = (LinearLayout)findViewById(R.id.crop_photo_image_view_container); 
        imageViewContainer.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {   
            @Override 
            public void onGlobalLayout() {
                   //直接移除吧
           imageViewContainer.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                    //现在布局全部完成,可以获取到任何View组件的宽度、高度、左边、右边等信息 
                    Log.i("CDH", "Global W:"+imageViewContainer.getMeasuredWidth()+"  H:"+imageViewContainer.getMeasuredHeight());
            } 
        });
3 楼 zhongguodaduan 2012-08-09  
非常感谢!
2 楼 csluqiang 2012-07-20  
不错对我有帮助!~
1 楼 zhoubaoming 2012-02-15  
不错啊,学习下

相关推荐

    Android 获得View宽高的几种方式总结

    在Activity的onCreate()或者onResume()中去获得View的高度的时候不能正确获得宽度和高度信息,这是因为 View的measure过程和Activity的生命周期不是同步执行的,因此无法保证Activity执行了onCreate onStart ...

    Android编程获取屏幕宽高与获取控件宽高的方法

    在`ViewTreeObserver.OnGlobalLayoutListener`监听器中,当视图树的全局布局状态或某个视图的可视状态发生改变时,重写`onGlobalLayout()`方法,即可在布局完成后获取到控件的宽度和高度。 ```java myView....

    webview网站全屏显示

    - 启用硬件加速可以提升WebView的性能,通过在Activity的`onCreate()`方法中调用`setLayerType()`: ```java getWindow().getDecorView().setLayerType(View.LAYER_TYPE_HARDWARE, null); ``` - 清理内存,当...

    popupwindow-android

    这里的`width`和`height`分别代表PopupWindow的宽度和高度,`isFocusable`参数决定了PopupWindow是否可以获取焦点,影响其是否能够响应触摸事件。 接着,我们学习如何显示和隐藏PopupWindow。调用`showAsDropDown()...

    myPopupWindow1

    这里的`view`是作为PopupWindow内容的视图对象,`width`和`height`分别是PopupWindow的宽度和高度。 2. **显示PopupWindow**: - `showAtLocation()`方法用于将PopupWindow显示在某个位置。第一个参数是要显示...

    Android中获取手机屏幕大小的方法

    在Android应用中,通常我们会在`Activity`的`onCreate()`方法中初始化`DisplayMetrics`对象,并在用户触发某个事件(如点击按钮)时获取屏幕尺寸。以下是一个简单的例子: 1. 首先,在布局文件(例如`main.xml`)中...

    Android中的getLeft()

    在Android开发中,`getLeft()` 是一个非常基础但重要的方法,主要应用于处理视图(View)对象的布局和定位。这个方法属于Android框架中的View类,返回的是视图左边缘相对于其父视图左边缘的像素距离。理解并正确使用...

    Android基础教程(四)之-取得手机屏幕大小DisplayMetrics的应用

    - **设置按钮点击事件**:当用户点击按钮时,通过`getDisplay().getMetrics()`方法获取屏幕的宽度和高度,并将其显示在`TextView`中。 #### 四、运行效果 - **按钮触发前**:界面显示“手机分辨率为:”。 - **按钮...

    Android用PopupWindow实现弹出listview形式菜单

    通常,我们会选择相对于某个View的位置来显示`PopupWindow`,例如按钮: ```java // 计算PopupWindow的显示位置 int[] location = new int[2]; button.getLocationOnScreen(location); // button是你想关联的...

    滑动选择器WheelView的实现

    3. 初始化并设置数据:在Activity或Fragment的onCreate()方法中,找到WheelView实例并设置数据源,可以是字符串数组或其他自定义对象。 4. 监听事件:注册OnItemSelectedListener监听器,当用户滚动选择时,会触发...

    TabDemo.rar

    2. 初始化TabHost:在Activity的onCreate()方法中,获取TabHost和TabWidget的引用,然后通过TabHost的setup()方法开始配置。 ```java TabHost tabHost = (TabHost) findViewById(R.id.tabhost); tabHost.setup(); `...

    【国开搜题】国家开放大学 一网一平台 Android核心开发技术19 期末考试押题试卷.docx

    - 屏幕分辨率是指屏幕上像素的数量,通常以宽度和高度的像素数表示。 **题目解析**: - 题目中提到的屏幕占据的物理区域所含像素的个数,即屏幕分辨率。正确答案是**D**,屏幕分辨率。 ### 9. 下拉列表导航 - 在...

    简单android popuwindow实现

    你需要指定显示的坐标,通常基于某个View。 ```java // 获取点击触发PopupWindow的View的坐标 int[] location = new int[2]; view.getLocationOnScreen(location); // 设置PopupWindow的位置 popupWindow....

    Android开发之CheckBox的简单使用与监听功能示例

    在接口的onCheckedChanged方法中,传入了两个参数:CompoundButton buttonView和boolean isChecked。这个方法会在CheckBox的选中状态发生改变时被调用。 具体来说: - CompoundButton buttonView:表示被改变状态...

    Android开发中PopupWindow用法实例分析

    在`onCreate`方法中,我们首先设置了界面的基本元素,如ListView `lv_app_manager` 和一个加载指示器`ll_appmanager_loading`。接着,我们启动一个新的线程来异步获取数据,这里的`provider`可能是从数据库或网络...

    Android开发之ToggleButton实现开关效果示例

    在`onCreate`方法中,我们可以找到以下代码: ```java tb = (ToggleButton) findViewById(R.id.toggleButton1); img = (ImageView) findViewById(R.id.imageView1); tb.setOnCheckedChangeListener(this); ``` 这...

    Android雷达扫描动态界面制作

    在 `MainActivity` 中,我们看到 `onCreate()` 方法内设置了无标题栏,并全屏显示界面。然后,通过 `setContentView()` 加载了布局文件 `activity_main.xml`,在该布局中包含了 `RadarView` 的实例。接着,获取到 `...

    Android开关控件Switch的使用案例

    在这个例子中,Switch的id为`switch1`,它的宽度和高度都设置为`wrap_content`,这使得Switch会根据内容自动调整大小。`text`属性用来显示在开关按钮上的文本,`textOff`和`textOn`分别表示开关关闭和打开时显示的...

Global site tag (gtag.js) - Google Analytics