Recyclerview子项宽度

时间:2017-03-28 07:13:29

标签: android android-recyclerview

如何获得所有儿童用品的宽度?

我将这些代码放在 onCreateViewHolder

viewholder.textView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

        @Override
        public void onGlobalLayout() {

            viewholder.textView.getWidth();
            Log.e("TAG", "onGlobalLayout: " + viewholder.textView.getWidth());

        }
    });

然后当我调试我的应用程序时,会出现很多宽度值。如何以正确的方式获得所有孩子的宽度(包括隐形孩子)?

1 个答案:

答案 0 :(得分:0)

  

然后当我调试我的应用程序时,会出现很多宽度值。如何以正确的方式获得所有孩子的宽度(包括隐形孩子)?

首先,您无法获得不可见的子项宽度(我假设您的意思是屏幕边界),因为它们尚未创建。

  

出现了很多宽度值

其次,你最好在完成后立即取消注册:

viewholder.textView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        viewholder.textView.getViewTreeObserver().removeOnGlobalFocusChangeListener(this);

        viewholder.textView.getWidth();
        Log.e("TAG", "onGlobalLayout: " + viewholder.textView.getWidth());

    }
});