LinearLayoutのサイズをJavaコード中で変更する

タイトルにある通り

LinearLayoutでは、setHeight等が使えないので、android.view.ViewGroup.LayoutParamsを使う.
LinearLayout linearLayout = findViewById(R.id.LinearLayout);
ViewGroup.LayoutParams layoutParams  = linearLayout.getLayoutParams();

layoutParams.height = ViewGroup.LayoutParams.WRAP_CONTENT;
layoutParams.width = 200;

ViewGroup.MarginLayoutParams marginLayoutParams = (ViewGroup.MarginLayoutParams)linearLayout.getLayoutParams();

marginLayoutParams.leftMargin = 8;
marginLayoutParams.rightMargin = 8;
marginLayoutParams.topMargin = 8;
marginLayoutParams.bottomMargin = 8;

linearLayout.setLayoutParams(marginLayoutParams);


単位は、pixelだそう. dip(dp)を使いたい場合は、例えば、5行目を
layoutParams.width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 200, getResources().getDisplayMetrics());


とする. (試してない.)

この方法は、ConstraintLayoutや、ImageButton等でも使えるっぽい.

参考にしたウェブサイト

0 件のコメント:

コメントを投稿

FloatingActionButtonをスクロール中に消す

NestedScrollView を下にスクロールしている間は, FloatingActionButton を表示させないようにする. 少し変えれば, RecyclerView 等の他のScrollViewにも使えそう(未確認). 下に実際の挙動を示した. 目次 ...