`
thierry.xing
  • 浏览: 664342 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
580fa9c1-4a0c-3f40-a55a-c9256ce73302
Sencha Touch中...
浏览量:0
社区版块
存档分类
最新评论

Android解决获取控件Width和Height为0的问题

 
阅读更多

Android在onCreate方法中调用View的getWidth和getHeight时返回的结果是0,因为此时控件还没有Draw出来,所以长和宽都是0。

 

如果想得到Width和Height,可以对View进行监听:

 

首先需要重写View的onSizeChange方法,加入监听回调函数:

public class MyTextView extends TextView {

	public MyTextView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		// TODO Auto-generated constructor stub
	}

	public MyTextView(Context context, AttributeSet attrs) {
		super(context, attrs);
		// TODO Auto-generated constructor stub
	}

	public MyTextView(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
	}

	SizeChangeListener l;

	public void setSizeChangeListener(SizeChangeListener orlExt) {
		l = orlExt;
	}

	@Override
	public void onSizeChanged(int w, int h, int oldw, int oldh) {
		// TODO Auto-generated method stub
		l.sizeChanged(w, h, oldw, oldh);
		super.onSizeChanged(w, h, oldw, oldh);
	}

	public interface SizeChangeListener {
		public void sizeChanged(int w, int h, int oldw, int oldh);
	}
}

 

然后在Activity中对View设置监听器:

		tv_front = new MyTextView(this);
		tv_front.setBackgroundResource(R.drawable.slidebar);
		tv_front.setTextColor(Color.BLACK);
		tv_front.setText("要闻");
		tv_front.setGravity(Gravity.CENTER);
		tv_front.setTextSize(16);
		//监听textview尺寸改变
		tv_front.setSizeChangeListener(new SizeChangeListener() {
			
			@Override
			public void sizeChanged(int w, int h, int oldw, int oldh) {
				// TODO Auto-generated method stub
	                       // 这里能获取真实的高和宽
			}
		});

 

2
1
分享到:
评论
2 楼 xiangxm 2013-11-06  
有关问题: 我自定义了两个控件一个是radiobutton 一个是Linearlayout  我想获取他们的,但是debug看到这两个控件的监听里面的参数在同时变化而且好像会执行>=2次,第二次会空指针异常崩溃。why》
1 楼 xiangxm 2013-11-06  
谢谢分享、谢谢分享、谢谢分享、

相关推荐

    android代码中获取控件高,宽度并修改

    总结来说,Android开发中获取和修改控件尺寸是通过`onMeasure()`、`onLayout()`、`onDraw()`以及`ViewTreeObserver`等方法来实现的。而修改尺寸则可通过设置`LayoutParams`、使用动画或Transition API等方式,确保在...

    android获取控件宽高

    首先,Android控件的宽度和高度有两种类型:测量尺寸(measured dimensions)和实际尺寸(actual dimensions)。测量尺寸是在布局阶段确定的,而实际尺寸则是在视图绘制完成后的尺寸。因此,获取这两种尺寸的方法略...

    Android自定义组合控件

    本文将深入探讨如何根据【标题】"Android自定义组合控件"和【描述】中的内容,结合【标签】"android 自定义控件 组合控件 自定义属性",来创建一个自己的自定义组合控件。 首先,我们要明白什么是自定义控件。在...

    Android控件大全以及各布局控件的使用方式

    ### Android控件大全及各布局控件的使用详解 #### 一、Android控件概述 ...通过以上介绍,您可以了解到Android控件的基本用法和一些高级控件的特性。掌握这些控件将有助于您开发出更加丰富和交互性强的应用程序。

    android Activity里获取控件的宽高

    - 控件宽高:在Android中,每个UI元素都有其宽度和高度,通常以像素为单位。 - 测量过程:Android系统会在布局渲染过程中自动测量每个控件的大小,但开发者也可以自定义测量逻辑。 2. 获取控件宽高的方法 - `...

    如何让安卓(Android)子控件超出父控件的范围显示

    它的大小和位置是通过设置`android:layout_width`和`android:layout_height`来控制的,而`android:layout_centerInParent="true"`则确保图标居中于这个圆形视图中。 总之,要让Android子控件超出父控件的范围显示,...

    Android 流程步骤控件

    本篇文章将深入探讨如何在Android中实现这样的控件,以及其在实际应用中的设计和使用。 一、步骤控件的基本概念 步骤控件通常由一系列表示步骤的小图标或文字组成,每个步骤代表一个具体的操作或状态。用户在完成每...

    Android Studio动态加载Fragment和获取实例的方法

    Android Studio 动态加载 Fragment 和获取实例的方法 Android Studio 是一个功能强大的集成开发环境(IDE),它提供了许多实用的功能和工具来帮助开发者快速构建高质量的 Android 应用程序。在 Android 开发中,...

    android一款仪表盘控件

    在Android开发中,为了提供丰富的用户界面体验,各种各样的自定义控件是必不可少的。本篇将深入探讨“GaugeView”...通过研究和使用这款控件,开发者不仅可以解决具体需求,也能加深对Android自定义视图的理解和实践。

    android完美下拉框控件

    在Android开发中,"完美下拉框控件"通常指的是具有高效、自定义化和用户体验优良的Spinner组件。Spinner是Android SDK提供的一种基础UI控件,用于实现下拉选择的效果,它可以在用户点击后弹出一个列表供用户选择。本...

    android学习之控件的显示和隐藏

    通过以上介绍,我们可以看到,在Android开发中控制控件的显示与隐藏是非常简单和直观的。无论是通过XML布局文件还是Java/Kotlin代码,都可以轻松实现这一功能。了解这些基础知识对于构建用户友好的界面和提高用户...

    android 时间滚动控件

    在Android中,实现时间滚动控件通常有两种方式:一是使用内置的`DatePicker`和`TimePicker`控件,二是自定义`WheelView`。`DatePicker`和`TimePicker`控件提供了标准的时间选择功能,但外观和交互可能无法满足所有...

    android 时间日期控件

    总结来说,Android时间日期控件允许开发者为用户提供直观且易于操作的时间和日期选择功能。通过结合使用`DatePickerDialog`和`TimePickerDialog`,我们可以方便地在应用中集成这些功能。同时,根据需求,我们还可以...

    Android 所有基本控件集合

    在Android开发中,基本控件是构建用户界面的基础元素,它们允许用户与应用程序进行交互。...通过学习和理解这个示例代码,开发者可以更好地掌握Android基本控件的用法,从而创建更丰富的用户界面。

    android获取控件宽高.rar

    综上所述,获取Android控件的宽高有多种方式,具体选择哪种取决于应用场景和需求。压缩包“android获取控件宽高.rar”可能包含了一些实用的示例,帮助开发者更深入地理解和使用这些方法。在实际开发中,结合具体场景...

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

    Android中获取控件宽高的4种方法集合 Android手机应用程序开发中,获取控件的宽高是一项非常重要的任务。今天,我们将分享四种获取控件宽高的方法,希望能够对Android开发者提供有价值的参考。 方法1:...

    Android-Android滚动选择控件

    总结,`WheelView`作为Android开发中的一个强大工具,为开发者提供了丰富的选项和定制能力,使得滚动选择控件的设计和实现变得更加灵活和便捷。在实际项目中,熟练掌握`WheelView`的使用,能够显著提升应用的交互性...

    android获取XML中使用的控件(Version 0.1)-32位

    "获取XML中使用的控件(Version 0.1)"工具就是为了解决这个问题而诞生的。它能自动读取XML文件,解析出所有控件及其属性,并生成与之对应的Java代码。这样,开发者只需将生成的代码粘贴到项目中,就可以直接使用了,...

Global site tag (gtag.js) - Google Analytics