Android中oncreate中获得控件高度或宽度的实现方法

Android中oncreate中获得控件高度或宽度的实现方法

onCreate函数只是提供了数据初始化的机会,此时还没有正式绘制图形。在图形尚未渲染的情况下,getWidth()或getHeight()得到的值为0。如果需要自适应屏幕,需要一进入界面就得到父控件大小,然后需要在onCreate中动态设置子控件大小。

方法1:

利用ViewTreeObserver类的addOnPreDrawListener接口。

ViewTreeObserver vto = hscrollview.getViewTreeObserver(); 

          vto.addOnPreDrawListener(newViewTreeObserver.OnPreDrawListener() { 

              @Override 

              publicboolean onPreDraw() { 

                   if(hasMeasured == false){ 

                        intwid = hscrollview.getWidth(); 

                        inthei = hscrollview.getHeight(); 

                        if(wid != 0 && hei != 0){ 

                            hasMeasured= true; 

                        } 

                   } 

                   returntrue; 

              } 

          });

方法2:

利用ViewTreeObserver类的addOnGlobalLayoutListener接口。

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • Android在OnCreate中获取控件的宽度和高度的实现代码

    在Android中,有时需要对控件进行测量,得到的控件宽度和高度可以用来做一些计算.在需要自适应屏幕的情况下,这种计算就显得特别重要.另一方便,由于需求的原因,希望一进入界面后,就能得到控件的宽度和高度. 可惜的是,根据我的验证,利用网上转载的那些方法在OnCreate函数中获取到的仍然是0(希望搞技术的能自己验证过再转载),例如Measure方法之后调用getMeasuredWidth的值还是0. 原因是因为当OnCreate函数发生时,只是提供了数据初始化的机会,此时还没有正式绘制图形.而绘

  • Android OnCreate()中获取控件高度与宽度两种方法详解

    Android OnCreate()中获取控件高度与宽度 试过在OnCreate()中获取控件高度与宽度的童鞋都知道,getWidth()与getHeight()方法返回是0,具体原因 看一下Activity的生命周期 就会明白. 上代码: 方法一: int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0,View.Me

  • Android使用onCreateOptionsMenu()创建菜单Menu的方法详解

    本文实例讲述了Android使用onCreateOptionsMenu()创建菜单Menu的方法.分享给大家供大家参考,具体如下: Android一共有三种形式的菜单: 1.选项菜单(optinosMenu) 2.上下文菜单(ContextMenu) 3.子菜单(subMenu) 其中最常用的就是选项菜单(optionsMenu), 该菜单在点击 menu 按键 后会在对应的Activity底部显示出来. 1.Activity菜单机制 (与dialog类似) Activity有一套机制来实现对菜

  • Android onCreateOptionsMenu的使用方法总结

    Android onCreateOptionsMenu的使用方法总结 任何一款软件都少不了对"菜单"的使用.在Android下,每一个activity都捆绑了一个Menu,要想定义和使用菜单,都必须在Activity下进行操作,复写onCreateOptionsMenu 和 onOptionsItemSelected这两个方法.举例如下: @Override public boolean onCreateOptionsMenu(Menu menu) { //调用基类的方法,以便调出系统

  • Android 解决嵌套Fragment无法接收onCreateOptionsMenu事件的问题

    前言 嵌套的二级Fragment无法接收onCreateOptionsMenu事件的问题,设置了setHasOptionsMenu也不管用. 正文 补充说明: 如果通过缓存Fragment手动调用二级Fragment,可能会出现莫名其妙的问题,比如更多Menu不显示. 解决办法: 在一级Fragment中添加Menu,可以在一级onOptionsItemSelected中手动调用二级的此方法来处理相关事件. 示例代码: @Override public void onCreateOptionsM

  • Android onCreate( )方法详细介绍

    onCreate( )方法是android应用程序中最常见的方法之一,那么,我们在使用onCreate()方法的时候应该注意哪些问题呢? 先看看Google Android Developers官网上的解释: onCreate(Bundle) is where you initialize your activity. Most importantly, here you will usually call setContentView(int) with a layout resource d

  • Android编程实现两个Activity相互切换而不使用onCreate()的方法

    本文实例讲述了Android编程实现两个Activity相互切换而不使用onCreate()的方法.分享给大家供大家参考,具体如下: 这里要实现的目的是: 有3个Activity: A,B,C,从A中可以进入B,B中可以进入C,并且B和C之间可能需要多次相互切换,因此不能使用普通的startActivity-finish方式,因为重新创建Activity比较耗时.当这个Activity内容比较多时,重复创建很大的影响了流畅性.(即实现类似于QQ上 选择照片页面-选择相册页面,这两个页面可能多次相

  • Android中oncreate中获得控件高度或宽度的实现方法

    Android中oncreate中获得控件高度或宽度的实现方法 onCreate函数只是提供了数据初始化的机会,此时还没有正式绘制图形.在图形尚未渲染的情况下,getWidth()或getHeight()得到的值为0.如果需要自适应屏幕,需要一进入界面就得到父控件大小,然后需要在onCreate中动态设置子控件大小. 方法1: 利用ViewTreeObserver类的addOnPreDrawListener接口. ViewTreeObserver vto = hscrollview.getVie

  • C#中datagridview使用tooltip控件显示单元格内容的方法

    本文实例讲述了C#中datagridview使用tooltip控件显示单元格内容的方法.分享给大家供大家参考,具体如下: 代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;

  • ASP.NET中TextBox使用Ajax控件显示日期不全的问题解决方法

    正常的引用 复制代码 代码如下: <%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="AjaxToolKit" %><asp:TextBox ID="txtRecordTime" runat="server" cssclass="style" width

  • Java实现获取Excel中的表单控件

    目录 引入jar包 代码示例 Excel中可通过[开发工具]菜单栏下插入表单控件,如文本框.单选按钮.复选框.组合框等等,插入后的控件可执行设置控件格式,如大小.是否锁定.位置.可选文字.数据源区域.单元格链接等.当Excel中已插入上述控件,需要读取时,也可以使用本文中的方法来读取.下面,将通过Java代码示例展示如何来获取Excel文档中的表单控件.以下是读取的方法及步骤,供参考. 引入jar包 按照如下方法来引用Spire.Xls.jar 版本:5.1.0 方法1 将 Free Spire

  • Android UI 中的 ListView列表控件的示例

    当程序中有大量的数据需要展示时,就需要用到 ListView 啦.ListView 允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内,同时屏幕上原有的数据则会滚动出屏幕. 1 基本用法 布局文件中加入 ListView: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/and

  • 总结Android中MD风格相关控件

    要使用MD风格控件,首先需要在Gradle中加入Support Design Library,例如: compile 'com.android.support:design:24.1.1' 一.CoordinatorLayout 1.CoordinatorLayout + AppBarLayout 布局文件代码如下: <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.

  • Android中获取控件宽高的4种方法集合

    借鉴自开发艺术 1.onWindowFocusChanged 这个方法会被调用多次,在View初始化完毕后会调用,当Activity的窗口得到焦点和失去焦点都会被调用一次(Activity继续执行和暂停执行时). @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (hasFocus) { int width = view.getMeasur

  • android 中win10 使用uwp控件实现进度条Marquez效果

    本文将告诉大家,如何做一个带文字的进度条,这个进度条可以用在游戏,现在我做的挂机游戏就使用了他. 如何做上图的效果,实际需要的是两个控件,一个是显示文字 的 TextBlock 一个是进度条. 那么如何让 文字和左边的距离变化?使用 TranslateTransform 看起来 Marquez 的界面就是: <ProgressBar x:Name="Mcdon" Maximum="100" Minimum="0" Value="2

  • Android中让图片自适应控件的大小的方法

    这就需要把.png格式的图片转成.9.png格式,.9.png就是后缀名.在安装Android-SDK时自带了<draw9patch.bat>可以把.png格式的图片编辑后保存就变成了.9.png格式.这个文件存放在你所安装的Android-SDK目录->sdk->tools目录下. .9.png格式在Andriod中可以做到根据控件大小自适应,最重要的是不会失真.是不是很完美?下面就来看是如何制作.9.png格式的进度条. 启动后的界面如下: 首先要准备要转换的png图片,并把图

随机推荐