首页 > 解决方案 > 'android' 调整片段内的视图大小

问题描述

我正在努力以编程方式调整片段内的视图大小,这个片段也在 FragmentStatePagerAdapter 中与另外两个视图循环。

我已经像往常一样声明并实例化了视图

然后我有这种方法可以在每个视图上应用调整大小:

private void dimensioniEmargini(View view, int width, int height, int marginLeft, int marginTop, int marginBotton, int marginRight) {

        RelativeLayout.LayoutParams parametri;
        parametri = (RelativeLayout.LayoutParams) view.getLayoutParams();
        parametri.height = height;
        parametri.width = width;
        parametri.leftMargin = marginLeft;
        parametri.topMargin = marginTop;
        parametri.bottomMargin = marginBotton;
        parametri.rightMargin = marginRight;
        view.setLayoutParams(parametri);

    }

我的问题是:如果我从 onCreateView 调用它,它工作得很好,但是,如果我从另一种方法(在同一个类中)调用,就像下面的那样(我给出值只是为了尝试)

public void aggiornaDimensioni(String _query) {

        dimensioniEmargini(barraCorretto, 45, 100, 0, 0, 0, 0);

    }

我得到一个空指针异常:

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法 'android.view.ViewGroup$LayoutParams android.view.View.getLayoutParams()'

我需要从方法调整大小,因为它是从父活动调用的,旨在根据数据库查询更改大小。

我该如何解决?

标签: androidresizefragmentviewgroupprogrammatically

解决方案


java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.ViewGroup$LayoutParams android.view.View.getLayoutParams()' on a null object reference

这意味着您正在调用getLayoutParams()一个空View对象。所以在这里:

parametri = (RelativeLayout.LayoutParams) view.getLayoutParams();

view一片空白。因此,无论您在期间传入什么都onCreateView可以,但是barraCorretto当您从该其他函数调用它时为空。

请记住,aFragment必须经过布局(通过onCreateView)才能执行getView(),并且Fragments 可以被销毁和重新创建。


推荐阅读