什么时候应该在片段中获得宽度视图

我在LinearLayout中以编程方式添加View(button).LinearLayout由Fragment中的XML进行布置。

我想获得button的宽度,但总是返回0。

我GOOGLE了这个问题,

getWidth只能在WindowFocusChanged上工作。

public void onWindowFocusChanged(boolean hasFocus) { } 

但是Fragment没有这个方法。

如何获得在片段中的查看宽度?

Solutions Collecting From Web of "什么时候应该在片段中获得宽度视图"

检出后GlobalLayoutListener 。 你可以像onWindowFocusChanged一样在onCreateView() Button中使用onWindowFocusChanged 。 它也比onWindowFocusChanged()更可靠。

试试如下:

  final View myView = profileContainer.findViewById(R.id.sub_page_padding); ViewTreeObserver vto = profilePadding.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Log.d("TEST", "Height = " + myView.getHeight() + " Width = " + myView.getWidth()); ViewTreeObserver obs = profilePadding.getViewTreeObserver(); obs.removeGlobalOnLayoutListener(this); } }); 

我有一个类似的问题,并解决了在片段callbackonViewCreated()像这样:

 @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); view.post(new Runnable() { @Override public void run() { // do operations or methods involved // View.getWidth(); or View.getHeight(); // here } }); } 

运行()运行后所有视图呈现…