Android动态获取TextView的属性(width、height、line)

在某些的androidUI设计中需要动态得到TextView、EditText的属性,比如宽度高度、行数等属性,这种类似的属性一般是在setText()过后才能得到的,当我们UI设计中需要这些属性时,则我们就得在绘制开始,或者绘制结束后得到属性,这时并没有显示在UI上。

在预绘制时得到属性:

ViewTreeObserver vto = textview.getViewTreeObserver();  vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {      public boolean onPreDraw() {          int height = textview.getMeasuredHeight();          int width = textview.getMeasuredWidth();          int line=textview.getLineCount();         /**         *得到属性实现自己的操作         **/        return true;      }  }); 

在布局测绘完后得到属性

ViewTreeObserver vto2 = textview.getViewTreeObserver();    vto2.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {      @Override        public void onGlobalLayout() {           /**         *得到属性实现自己的操作         **/     }    }); 

这两个动态接口可以用在ui的所有控件中。

observer 这是一个注册监听视图树的观察者(observer),在视图树种全局事件改变时得到通知。这个全局事件不仅还包括整个树的布局,从绘画过程开始,触摸模式的改变等。ViewTreeObserver不能够被应用程序实例化,因为它是由视图提供,参照getViewTreeObserver()以查看更多信息。

interface ViewTreeObserver.OnPreDrawListener当一个视图树将要绘制时,所要调用的回调函数的接口类。

interface ViewTreeObserver.OnGlobalLayoutListener当在一个视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变时,所要调用的回调函数的接口类。

更多相关文章

  1. Android:style和theme
  2. Android中关于Task的一些认识
  3. TextView一行显示一个文字效果
  4. 《Android(安卓)Dev Guide》系列教程9:用户界面之声明布局
  5. Android视图动画
  6. 开发者指南-Android如何绘制View
  7. android事件拦截处理机制图解
  8. 【AndroidManifest.xml详解】Manifest属性之versionCode,version
  9. 2012-7-17 android:layout_weight

随机推荐

  1. Android的图像处理
  2. Android(安卓)Studio(3)---Android(安卓)St
  3. android访问NFC的SE
  4. Android通用UI封装----“我的”页面Item
  5. 【android笔记】之 android studio (一)
  6. TextView 实现跑马灯效果
  7. android:layout_gravity 居中布局
  8. 1. Android 环境搭建
  9. Appium自动化测试常用iOS和android的Capa
  10. Android计算器功能的实现