有时候需要在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());
}
}
});
分享到:
相关推荐
在Activity的onCreate()或者onResume()中去获得View的高度的时候不能正确获得宽度和高度信息,这是因为 View的measure过程和Activity的生命周期不是同步执行的,因此无法保证Activity执行了onCreate onStart ...
在`ViewTreeObserver.OnGlobalLayoutListener`监听器中,当视图树的全局布局状态或某个视图的可视状态发生改变时,重写`onGlobalLayout()`方法,即可在布局完成后获取到控件的宽度和高度。 ```java myView....
- 启用硬件加速可以提升WebView的性能,通过在Activity的`onCreate()`方法中调用`setLayerType()`: ```java getWindow().getDecorView().setLayerType(View.LAYER_TYPE_HARDWARE, null); ``` - 清理内存,当...
这里的`width`和`height`分别代表PopupWindow的宽度和高度,`isFocusable`参数决定了PopupWindow是否可以获取焦点,影响其是否能够响应触摸事件。 接着,我们学习如何显示和隐藏PopupWindow。调用`showAsDropDown()...
这里的`view`是作为PopupWindow内容的视图对象,`width`和`height`分别是PopupWindow的宽度和高度。 2. **显示PopupWindow**: - `showAtLocation()`方法用于将PopupWindow显示在某个位置。第一个参数是要显示...
在Android应用中,通常我们会在`Activity`的`onCreate()`方法中初始化`DisplayMetrics`对象,并在用户触发某个事件(如点击按钮)时获取屏幕尺寸。以下是一个简单的例子: 1. 首先,在布局文件(例如`main.xml`)中...
在Android开发中,`getLeft()` 是一个非常基础但重要的方法,主要应用于处理视图(View)对象的布局和定位。这个方法属于Android框架中的View类,返回的是视图左边缘相对于其父视图左边缘的像素距离。理解并正确使用...
- **设置按钮点击事件**:当用户点击按钮时,通过`getDisplay().getMetrics()`方法获取屏幕的宽度和高度,并将其显示在`TextView`中。 #### 四、运行效果 - **按钮触发前**:界面显示“手机分辨率为:”。 - **按钮...
通常,我们会选择相对于某个View的位置来显示`PopupWindow`,例如按钮: ```java // 计算PopupWindow的显示位置 int[] location = new int[2]; button.getLocationOnScreen(location); // button是你想关联的...
3. 初始化并设置数据:在Activity或Fragment的onCreate()方法中,找到WheelView实例并设置数据源,可以是字符串数组或其他自定义对象。 4. 监听事件:注册OnItemSelectedListener监听器,当用户滚动选择时,会触发...
2. 初始化TabHost:在Activity的onCreate()方法中,获取TabHost和TabWidget的引用,然后通过TabHost的setup()方法开始配置。 ```java TabHost tabHost = (TabHost) findViewById(R.id.tabhost); tabHost.setup(); `...
- 屏幕分辨率是指屏幕上像素的数量,通常以宽度和高度的像素数表示。 **题目解析**: - 题目中提到的屏幕占据的物理区域所含像素的个数,即屏幕分辨率。正确答案是**D**,屏幕分辨率。 ### 9. 下拉列表导航 - 在...
你需要指定显示的坐标,通常基于某个View。 ```java // 获取点击触发PopupWindow的View的坐标 int[] location = new int[2]; view.getLocationOnScreen(location); // 设置PopupWindow的位置 popupWindow....
在接口的onCheckedChanged方法中,传入了两个参数:CompoundButton buttonView和boolean isChecked。这个方法会在CheckBox的选中状态发生改变时被调用。 具体来说: - CompoundButton buttonView:表示被改变状态...
在`onCreate`方法中,我们首先设置了界面的基本元素,如ListView `lv_app_manager` 和一个加载指示器`ll_appmanager_loading`。接着,我们启动一个新的线程来异步获取数据,这里的`provider`可能是从数据库或网络...
在`onCreate`方法中,我们可以找到以下代码: ```java tb = (ToggleButton) findViewById(R.id.toggleButton1); img = (ImageView) findViewById(R.id.imageView1); tb.setOnCheckedChangeListener(this); ``` 这...
在 `MainActivity` 中,我们看到 `onCreate()` 方法内设置了无标题栏,并全屏显示界面。然后,通过 `setContentView()` 加载了布局文件 `activity_main.xml`,在该布局中包含了 `RadarView` 的实例。接着,获取到 `...
在这个例子中,Switch的id为`switch1`,它的宽度和高度都设置为`wrap_content`,这使得Switch会根据内容自动调整大小。`text`属性用来显示在开关按钮上的文本,`textOff`和`textOn`分别表示开关关闭和打开时显示的...