activity 中获取控件的宽高

1.第一种方式:

TextView textview3 = findViewById(R.id.textview3);
textView3.post(new Runnable() {
            @Override
            public void run () {
                int width = textView3.getWidth();
                ViewGroup.LayoutParams layoutParams = button2.getLayoutParams();
                layoutParams.width = width;
                button2.setLayoutParams(layoutParams);
            }
        });

view的post方法,runnable对象中的方法会在View的measure、layout等事件后触发UI事件队列会按顺序处理事件。在setContentView()被调用后,事件队列中会包含一个要求重新layout的message,所以任何你post到队列中的东西都会在Layout发生变化后执行。

activity中先这行oncreate,然后才是第一次调用onmeasure,

2.第二种方式,同过treeobserve

firstTxt = (TextView) findViewById(R.id.hello_word_txt);
        ViewTreeObserver viewTreeObserver = firstTxt.getViewTreeObserver();
        viewTreeObserver.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
            @Override
            public boolean onPreDraw() {
                int height = firstTxt.getHeight();
                int width = firstTxt.getWidth();
                Log.v("获取TextView宽高", "宽度:" + width + ",高度:" + height);
                return true;
            }
        });
  
时间: 2024-08-01 03:56:43

activity 中获取控件的宽高的相关文章

Android在onCreate中获取控件的宽高

在某些需求下,我们需要在onCreate的时候就获取到控件的宽高,但是如果直接用view.getWidth()或view.getHeight()会得到0.这是因为在onCreate执行的时候,控件还没有被绘制出来. 利用下面的方法可以获得控件的宽高: ViewTreeObserver vto = zoomImageView.getViewTreeObserver(); vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener(

uwp - 获取控件的宽高

在wpf可以通过控件.Width/Height来获取宽高,来到uwp上却没效果,在微软的开发人员中心找到了答案. 所以,我们要在后台获取控件的宽高应该是:控件.ActualHeight/ActualWidth.

【Android】获取控件的宽和高

有时候我们须要在Activity的时候获取控件的宽和高来做一些操作,以下介绍三种获取宽和高的方式: 1. onWindowFocusChanged @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (hasFocus) { int width = image.getMeasuredWidth(); int height = image.ge

android PercentRelativeLayout 支持百分比来设置控件的宽高

Android 最终官方支持按百分比来设置控件的宽高了. 我们先来看看效果:       看一下布局: PercentRelativeLayout <android.support.percent.PercentRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"

Android下在onCreate中获取控件的宽度和高度(通过回调)

有时候需要在onCreate方法中知道某个View组件的宽度和高度等信息, 而直接调用View组件的getWidth().getHeight().getMeasuredWidth().getMeasuredHeight().getTop().getLeft()等方法是无法获取到真实值的,只会得到0. 这是因为View组件布局要在onResume回调后完成. 下面提供实现方法: 第一种: onGlobalLayout回调会在布局完成时自动调用 img1.getViewTreeObserver().

android——如何理解控件的宽高及layout_grivaty与grivaty的区别

关于Layout_width/height引发的宽高思考 方式一: 结果不符合预期. 运行结果: 方式二: 结果符合预期. 如下图: Android控件宽高的规则: Android下的控件默认没有宽高,是由父控件给其宽高的. 其中一般的view控件是由(ViewGroup控件:LinearLayout.RelativeLayout .TableLayout.FrameLayout .AbsoluteLayou )五大布局给其宽高的. 而像LinearLayout.RelativeLayout等这

Android之activity中新建控件

了解了5大布局,我们会发现这些布局都是静态的,如何让系统自动生成控件呢?这就需要activity来帮忙了 今天我们讲的就是用activity新建布局 用案例来说吧! 实现一个输入行和列自动生成表格并生成背景颜色 效果如图 代码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/a

在onCreate()中获取某个View的宽高

我们都知道,在Activity的onCreate()方法中调用View的getWidth()和getHeight()方法时,返回的值都是0,因为Activity调用setContentView方法只是创建了这个View,调用了这个View构造方法而已,其中的onMeasure()方法还没被调用,所以不能知道它的宽高.但是,View有一个公开的方法post(),允许我们通过参数Runnable,在子线程中获取View的宽和高. public class MainActivity extends A

Silverlight中获取控件中子控件

如题:,直接来看代码: /// <summary> /// 查找并返回第一个 相同 name的子元素 /// </summary> /// <typeparam name="T">需要查找 的子控件 类型</typeparam> /// <param name="obj">需要查找其下面子控件的 控件 类型</param> /// <param name="childName&q