【发布时间】:2016-06-23 20:19:25
【问题描述】:
这里对 android 非常陌生!我基本上对如何更改视图的高度和宽度感到困惑。目前我有这样的(sn-ps):
XML(使用相对布局)
<View
android:id="@+id/homeBackgroundTop"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_centerHorizontal="true"
android:background="@color/colorAccent" />
Java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int screenWidth = size.x;
int screenHeight = size.y;
final float pixelToDp = getResources().getDisplayMetrics().density;
int screenHeightDp = (int) (screenHeight * pixelToDp + 0.5f);
int screenWidthDp = (int) (screenWidth * pixelToDp + 0.5f);
View view = findViewById(R.id.homeBackgroundTop);
view.setLayoutParams(new RelativeLayout.LayoutParams(screenWidthDp, screenHeightDp));
setContentView(R.layout.activity_main);
}
问题是它引发了以下致命错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setLayoutParams(android.view.ViewGroup$LayoutParams)' on a null object reference
现在我的问题是,如何以编程方式正确更改视图的高度和宽度?我查看了许多其他 SO 答案,但似乎没有一个对我有用。
P.S. RelativeLayout.LayoutParams 到底指的是什么?如果我想更改视图,为什么要调用布局?为什么有时还包含LinearLayout?最后,LayoutParams 到底是什么?如果您有任何这些问题的链接,我们将不胜感激 :) 感谢您的帮助!
【问题讨论】: