Когда я должен получить Width View в фрагменте

Я добавляю View (button) программно в Linearlayout.LinearLayout оформляется XML в Fragment.

Я хочу получить ширину кнопки, но всегда возвращаю 0.

Я искал эту проблему,

GetWidth работает только наWindowFocusChanged.

public void onWindowFocusChanged(boolean hasFocus) { } 

Но Fragment не имеет этого метода.

Как получить ширину экрана в фрагменте?

Solutions Collecting From Web of "Когда я должен получить Width View в фрагменте"

Отправляйте сообщение GlobalLayoutListener . Вы можете использовать прослушиватель на своей Button в onCreateView() как вы использовали 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); } }); 

У меня была аналогичная проблема и она была решена в обратном вызове Fragment onViewCreated () следующим образом:

 @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 } }); } 

Run () запускается после отображения всех представлений …