有时候我们需要获得控件的大小,但是在Activity的onCreate()生命周期方法中调用getWidth()和getHeight()方法并不能获得控件的宽和高,因为此时我们的界面并未被绘制完成。不过我们却可以在onWindowFocusChanged(boolean hasFocus)这个方法中获得控件的大小。
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
int height = titleLeftBtn.getHeight();
int width = titleLeftBtn.getWidth();
}
当前窗口的Activity在获得或者失去焦点的时候就会调用这个方法,它是这个Activity是否对用户可见的最好标志。
那么对于Fragment又该怎么办呢?Fragment并未提供类似onWindowFocusChanged的方法。这时我们就需要用到ViewTreeObserver了。
ViewTreeObserver observer = layoutIndex.getViewTreeObserver();
observer.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
if (!isMeasured) {
int layoutHeight = layoutIndex.getMeasuredHeight();
isMeasured = true;
}
return true;
}
});
顾名思义,这是个对视图变化进行监听的观察者。提供了以下接口,大家可以自己试着测试一下。
interface ViewTreeObserver.OnPreDrawListener
interface ViewTreeObserver.OnGlobalFocusChangeListener
interface ViewTreeObserver.OnGlobalLayoutListener
interface ViewTreeObserver.OnScrollChangedListener
interface ViewTreeObserver.OnTouchModeChangeListener
分享到:
相关推荐
本文将详细讲解如何在代码中获取控件的高度和宽度,并且如何修改这些尺寸以达到预期的显示效果。 首先,我们来探讨如何获取控件的尺寸。在Android中,控件的尺寸分为两种:测量尺寸(measured dimensions)和实际...
在Android开发中,获取控件的宽度和高度是常见的需求,尤其在自定义视图、动画效果或者布局计算...在博客《android获取控件宽高》中,作者提供了详细的实践案例和测试代码,建议有兴趣的开发者查阅以获得更深入的理解。
这个压缩包“android获取控件宽高.rar”可能包含了一些示例代码或者教程,帮助开发者理解如何在不同场景下获取控件尺寸。由于无法直接查看压缩包内的具体内容,以下将根据常见情况,详细解释在Android中如何获取控件...
通过阅读《Android自定义控件开发入门与实战》这本书,开发者不仅可以学习到Android自定义控件的基本概念和技巧,还能获取到大量实战经验,提升解决实际问题的能力。无论是移动端新手还是经验丰富的开发者,这本书都...
本文将深入探讨如何创建一个自定义控件,用于根据麦克风输入的声音大小动态显示曲线图,并且该控件能响应触摸事件。我们将从以下几个方面进行讨论: 1. **麦克风数据获取** 在Android中,我们可以使用`...
下面将详细介绍如何在Android的Activity中获取控件的宽高以及相关知识点。 1. 基本概念 - 控件宽高:在Android中,每个UI元素都有其宽度和高度,通常以像素为单位。 - 测量过程:Android系统会在布局渲染过程中...
2. **设置尺寸单位**:在Android中,我们可以使用像素(px)、密度独立像素(dp)或百分比等单位来设定控件大小。动态调整时,通常会将数值转换为相应的单位,例如用dp值除以屏幕密度得到像素值。 3. **动态调整...
Android平台提供了`MediaRecorder`类用于录音,而`VoiceLine`控件可能需要利用`AudioRecord`类来获取音频流的实时数据。通过对音频数据的振幅进行分析,`VoiceLine`可以计算出相应的波形高度,进而更新界面的绘制。 ...
Android允许我们自定义View的样式,包括表格单元格的背景色、文字颜色、字体大小等。在XML中定义样式,然后在代码中应用。另外,我们可以通过设置LayoutParams来调整单元格的宽度和高度,实现不同样式的单元格。 4...
1. **获取控件大小**: 获取控件的大小通常涉及到`measure()`方法,这个方法用于测量控件的实际尺寸。在示例代码中,`getWidth()`和`getHeight()`两个静态方法分别用来获取控件的宽度和高度。它们首先创建了一个不...
在Android开发中,自定义控件是提升应用用户体验和界面美观度的重要手段。"android之自定义开关控件"这个主题旨在教你如何在Android平台上创建一个类似苹果iOS Toggle的自定义开关组件。以下是对这个主题的详细讲解...
总之,实现`TextView`的字体自适应控件大小是一个实用的技巧,能够提升应用的易用性和视觉效果,尤其在处理长文本或需要多行显示的场景中。通过理解并应用这些知识点,开发者可以创建出更适应用户需求的Android应用...
重写需要定制的方法,比如`onDraw()`用于自定义绘制逻辑,`onMeasure()`用于计算控件大小等。 3. 在XML布局文件中使用自定义控件,需要指定完全限定类名。 4. 在活动中实例化并绑定数据,如果需要。 2. **组合**...
总结一下,Android获取麦克风音量并转化为分贝值,需要使用`MediaRecorder`类来获取音频样本,然后通过计算RMS值并转换为分贝。同时,别忘了处理权限问题和优化性能。在开发过程中,可以参考ATest项目中的代码进行...
在Android开发中,基本控件是构建用户界面的基础,它们为...同时,参考"Android开发者必看资料大全.xlsx"中的资源,可以获取更多学习材料,加速学习进程。在实践中不断尝试和调试,才能真正掌握这些基本控件的使用。
在Android开发中,图表控件是用于展示数据可视化的重要工具,可以帮助用户更直观地理解复杂的数据信息。MPAndroidChart库是一个流行的开源项目,专门用于在Android应用中创建各种类型的图表,如柱状图(BarChart)、...
接下来,我们讨论如何在不同阶段获取控件的宽高: 1. **布局阶段**:在`onLayout()`方法中,我们可以获取到控件的最终宽度和高度。但是,此时的尺寸可能仍受动画或过渡效果的影响,不完全准确。 2. **绘制阶段**:...
7. **自定义属性**:通过创建res/values/attrs.xml文件,定义自定义属性,然后在自定义控件中通过getAttributes()方法获取这些属性值,以实现个性化配置。 8. **状态监听**:了解View的各个状态,如按下、聚焦、选...