ImageButton.getWidth()和getHeight()返回0

时间:2016-07-02 15:55:56

标签: android

目前在我的Android应用程序中,我的ImageButton getWidth()getHeight()返回0.在搜索论坛时,我意识到这是因为布局/视图尚未完成/最终确定OS,因此返回0.因此,他们建议使用OnGlobalLayoutListener来解决此问题。但是,按钮是在片段中创建的,片段具有onCreateView()方法,该方法返回片段的视图。那么在这种情况下如何附加此监听器?

感谢。

2 个答案:

答案 0 :(得分:0)

完全以同样的方式。您可以在onCreateViewonViewCreated中执行此操作。重要的是它必须在你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(..)方法后,您可以获得高度和宽度