想知道在代碼中通過getLayoutParams()得到一個View的LayoutParams,然後修改之後一定要通過set方法才能生效嗎?比如修改了Width屬性?
下面是學習的時候看到的代碼,這個方法沒有set啊,這是怎麼回事呢
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initValues();
content.setOnTouchListener(this);
}
private void initValues() {
WindowManager window = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics dm = new DisplayMetrics();
window.getDefaultDisplay().getMetrics(dm);
screenWidth=dm.widthPixels;
content = findViewById(R.id.content);
menu = findViewById(R.id.menu);
menuParams = (LinearLayout.LayoutParams) menu.getLayoutParams();
// 將menu的寬度設置為屏幕寬度減去menuPadding
menuParams.width = screenWidth - menuPadding;
// 左邊緣的值賦值為menu寬度的負數
leftEdge = -menuParams.width;
// menu的leftMargin設置為左邊緣的值,這樣初始化時menu就變為不可見
menuParams.leftMargin = leftEdge;
// 將content的寬度設置為屏幕寬度
content.getLayoutParams().width = screenWidth;
}
對,需要從新set,不然布局不會更新的。