Android TextView的高度和宽度为0

MrF*_*oYo 29 android

我有一个小项目,我想在几次重用某个UI组件,所以我通过扩展ViewGroup创建了一个小部件.在该ViewGroup中,我在一个包含LinearLayout内的TextView的视图中膨胀,并通过addView将该膨胀的视图添加到ViewGroup.

外部LinearLayout完美展开,但当我通过Hierarchy Viewer查看时,内部TextView的getHeight()= 0和getWith()= 0.奇怪的是layout_height和layout_width是我在xml中给出的值.

我这里没有代码,但它看起来像这样:

XML:

<LinearLayout  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent">  

    <TextView  
        android:text="random text.."  
        android:layout_with="200px"  
        android:layout_height="50px" />  
</LinearLayout>  
Run Code Online (Sandbox Code Playgroud)

Java的:

class MyWidget extends ViewGroup {
...

//In constructor  
myView = View.inflate(context, R.layout.xml, null);  
addView(myView);  

//In layout  
myView.layout(l, t, r, b);  
Run Code Online (Sandbox Code Playgroud)

我试图给我的文本视图fill_parent值的大小,但它没有帮助.

She*_*tib 109

请记住:getHeight()getWith()返回0 如果组件尚未得出.


在绘制之前找到a的宽度和高度View :

  1. 第一次打电话 measure

    view.measure(MeasureSpec.UNSPECIFIED,MeasureSpec.UNSPECIFIED)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 现在您可以使用宽度getMeasuredWidth和高度getMeasuredHeight

    int width = view.getMeasuredWidth();
    int height = view.getMeasuredHeight();
    
    Run Code Online (Sandbox Code Playgroud)

我已经发布了一些更多的想法:如何获得视图的宽度/高度

  • 你做到了 为#android中最常见的问题提供了一行答案 (15认同)
  • 在这个问题的任何答案中,我从未见过这个. (2认同)

plu*_*us- 4

1) 以下是一些在您的开发手机上使用层次结构查看器的链接。

http://developer.android.com/guide/developing/debugging/debugging-ui.html

以及您需要的课程:

http://github.com/romainguy/ViewServer

2)您还可以像使用 include 标签的组件一样重用布局:

<include android:id="@+id/your_id" layout="@layout/layout_name" />
Run Code Online (Sandbox Code Playgroud)