'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
可以被销毁并重新创建。
我正在努力以编程方式调整片段内视图的大小,这个片段也在 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
可以被销毁并重新创建。