你可以通过视图的getWidth()和getHeight()来获取视图的宽度和高度。
但是,可能会让你失望的是,如果你直接在onCreate方法内调用这两个函数,你会的到0。
为什么呢?
这是因为,当onCreate被调用的时候,视图的内容正在被LayoutInflater来填充xml布局。
这个过程会填充布局,但是暂时不会设置视图的大小。
那么视图到底什么时候获得自己的大小尺寸呢?
实际上是在Layout以后,而layout又是在onCreate调用以后。
那么,如果我们要在onCreate方法中获取视图的大小,应该怎么办呢?
其实,解决方法还是有的,就是利用视图的post方法。
废话不多说,看下代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
View view = findViewById(R.id.main_my_view);
view.post(new Runnable() {
// Get size of view after layout
@Override
public void run() {
Log.d(TAG, "view has width: "+view.getWidth() + " and height: "+view.getHeight());
}
});
}
分享到:
相关推荐
总结起来,要在`OnCreate`中获取控件的宽度和高度,需要利用`ViewTreeObserver`的预绘制监听器,确保在视图绘制之前获取到准确的尺寸信息。这种方法能够帮助开发者实现更灵活的自适应布局和更精确的界面计算。
首先,我们来看为什么在onCreate()中获取ImageView的宽度和高度会失败。当Activity创建时,onCreate()方法是最早被调用的,但在这个阶段,视图的测量和布局尚未完成。因此,试图在这个时候获取View的尺寸通常会得到0...
总结来说,虽然`onCreate()`不适合直接获取视图尺寸,但通过`ViewTreeObserver`的`addOnPreDrawListener`或`addOnGlobalLayoutListener`,我们可以在合适的时机获取到控件的高度和宽度,从而实现自适应屏幕或其他...
在Android应用开发中,我们经常需要在特定时刻获取UI控件的高度和宽度,例如TextView、Button等。然而,在`OnCreate()`方法中直接调用`getWidth()`和`getHeight()`通常会返回0,因为此时布局尚未完全绘制。为了解决...
综上所述,动态地设置或获取控件的宽度和高度是通过调整控件的LayoutParams实现的,可以在`onCreate()`方法中执行,但要注意视图的加载状态和尺寸单位的转换。同时,理解控件尺寸的相关概念,对于优化布局和提升用户...
我们可以在Activity的onCreate()方法中获取到WindowManager,然后通过它获取DisplayMetrics对象。代码如下: ```java Display display = getWindowManager().getDefaultDisplay(); DisplayMetrics metrics = new ...
然而,直接在`onCreate()`或`onResume()`方法中尝试获取LinearLayout的宽度和高度,由于此时视图尚未完全绘制,所以返回值通常是0。 为了解决这个问题,有两种常见的解决方案: 1. 使用`Handler`和`TimerTask`: ...
- **视图创建**: 在`getView`方法中,根据索引获取相应的图像资源,并将其设置到`ImageView`组件中,然后返回包含这个`ImageView`的视图。 #### 总结 虽然题目提及的是C#中的GridView控件,但根据所提供的示例,...
在Android开发中,获取屏幕和控件的宽高是常见的需求,这有助于我们进行界面布局和自定义视图的设计。本示例demo将详细介绍三种不同的方法来获取Android设备的屏幕宽高,以及如何获取控件的宽高。下面将详细阐述这些...
在Android开发中,获取View在布局中的实际高度与宽度并非如初学者想象的那么简单,直接调用`getWidth()`和`getHeight()`方法往往无法得到正确的值。这是因为这些方法在`onCreate()`等生命周期方法中调用时,View还...
总的来说,理解和解决“onCreate获取不到控件宽高”的问题对于Android开发者来说是基础但重要的技能,它直接影响到UI的正确显示和交互体验。同时,创建一个竖向滚动选择组件则需要对Android的布局系统、触摸事件处理...
例如,在main.xml中,定义一个LinearLayout,然后在其中包含一个ViewPager,指定其宽度和高度为match_parent,并设置一个唯一的ID。 ```xml android:id="@+id/awesomepager" android:layout_width="match_...
在Android开发中,获取控件的宽度和高度是常见的需求,尤其在自定义视图或者动态布局时。这个压缩包“android获取控件宽高.rar”可能包含了一些示例代码或者教程,帮助开发者理解如何在不同场景下获取控件尺寸。由于...
`getLeft()`方法的返回值是基于视图的布局属性计算得出的,这些属性包括`android:layout_width`(视图宽度)、`android:layout_height`(视图高度)、`android:layout_margin`(边距)等。在XML布局文件中,我们可以...
在Android开发中,获取View的高度是常见的需求,特别是在布局动态计算、自定义View或滚动事件处理中。本文将详细介绍三种获取View高度的方法。 1. 使用`getMeasuredHeight()`与`getHeight()`的区别 这两个方法在大...
在这个XML布局中,我们使用了一个LinearLayout作为根视图,设置其宽度和高度为填充父容器,并设置了垂直方向的orientation。LinearLayout内部包含一个TextView和一个ImageView,分别用于显示倒计时文本和图片。...
1. 布局绘制过程 2. 遍历视图 3. 在onCreate()方法中获取View的宽度和高度 4. android:measureWithLargestChild使用说明 5. weight及weightSum使用说明
在`onCreate`方法中,通过`getWindowManager().getDefaultDisplay().getMetrics(dm)`获取屏幕宽度和高度,这些信息在计算图片缩放比例时可能很有用。 5. **ImageView的scaleType属性**: 在Android中,ImageView有一...