你所说的组件是不是Fragment里面子控件?
这个是可以的

解决方案 »

  1.   

    是的,就是我在Fragment里有一个EditText,点击会出现一个ListView,但是现在这个ListView的宽度是取决于这个EditText的,所以必须取得这个EditText的宽度才行
      

  2.   

    private EditText mEditText;。
    mEditText = (EditText) rootView.findViewById(R.id.edittext);。。
    int width = mEditText.getMeasuredWidth();
      

  3.   

    可以在Activity里面直接获取Fragment里面的元素,希望对你有帮助,帮忙投一票吧http://vote.blog.csdn.net/blogstaritem/blogstar2013/xiaanming
      

  4.   

    说了,是这个生命周期无法获取,我不懂哪个生命周期能获取子Fragment里的组件的宽度,这个是问题
      

  5.   

    说了,是这个生命周期无法获取,我不懂哪个生命周期能获取子Fragment里的组件的宽度,这个是问题
    不对呀,你点击EditText,再去执行上面的代码,肯定可以获取到这个宽度。因为这个时候EditText已经计算完了尺寸等。mHandler.post(new Runnable() {
                @Override
                public void run() {
                    int width = mEditText.getMeasuredWidth();   
                }
            }, 20);
      

  6.   

    跟Activity获取布局里面的view一样啊
      

  7.   

    说了,是这个生命周期无法获取,我不懂哪个生命周期能获取子Fragment里的组件的宽度,这个是问题
    不对呀,你点击EditText,再去执行上面的代码,肯定可以获取到这个宽度。因为这个时候EditText已经计算完了尺寸等。mHandler.post(new Runnable() {
                @Override
                public void run() {
                    int width = mEditText.getMeasuredWidth();   
                }
            }, 20);
    嘛,我说的是要立即获得这个组件的宽度的……点击后的就不是了,我懂得如何获得了
    ViewTreeObserver vto = parent1.getViewTreeObserver();
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

    @Override
    public void onGlobalLayout() {
    // TODO 自动生成的方法存根
    pwidth1 = parent1.getWidth();
    }
    });
    这样可以直接获得组件的宽度。