'android' 调整片段内视图的大小

'android' resize a view inside a fragment

我正在努力以编程方式调整片段内视图的大小,这个片段也在 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 调用它,它会完美地工作,但是,如果我从另一个方法(在同一个 class 内)调用,就像下面的方法(我给出值只是为了尝试它出)

public void aggiornaDimensioni(String _query) {

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

    }

我得到一个空指针异常:

java.lang.NullPointerException: 尝试在空对象引用

上调用虚拟方法'android.view.ViewGroup$LayoutParams android.view.View.getLayoutParams()'

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

我该如何解决?

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

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

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

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

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