目前在我的Android应用程序中,我的ImageButton getWidth()
和getHeight()
返回0.在搜索论坛时,我意识到这是因为布局/视图尚未完成/最终确定OS,因此返回0.因此,他们建议使用OnGlobalLayoutListener
来解决此问题。但是,按钮是在片段中创建的,片段具有onCreateView()
方法,该方法返回片段的视图。那么在这种情况下如何附加此监听器?
感谢。
答案 0 :(得分:0)
完全以同样的方式。您可以在onCreateView
或onViewCreated
中执行此操作。重要的是它必须在你inflate
布局之后:
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_test, container, false);
final View measuredView = rootView.findViewById(R.id.measured_view);
measuredView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int width = measuredView.getWidth();
int height = measuredView.getHeight();
if (width > 0 && height > 0) {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
measuredView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
measuredView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
//DO SOMETHING WITH NON-ZERO DIMENSIONS
}
}
});
return rootView;
}
答案 1 :(得分:0)
在我的意见中,执行setContentView(..)
方法后,您可以获得高度和宽度