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

タイトルにある通り

LinearLayoutでは、setHeight等が使えないので、android.view.ViewGroup.LayoutParamsを使う.
  1. LinearLayout linearLayout = findViewById(R.id.LinearLayout);
  2. ViewGroup.LayoutParams layoutParams = linearLayout.getLayoutParams();
  3.  
  4. layoutParams.height = ViewGroup.LayoutParams.WRAP_CONTENT;
  5. layoutParams.width = 200;
  6.  
  7. ViewGroup.MarginLayoutParams marginLayoutParams = (ViewGroup.MarginLayoutParams)linearLayout.getLayoutParams();
  8.  
  9. marginLayoutParams.leftMargin = 8;
  10. marginLayoutParams.rightMargin = 8;
  11. marginLayoutParams.topMargin = 8;
  12. marginLayoutParams.bottomMargin = 8;
  13.  
  14. linearLayout.setLayoutParams(marginLayoutParams);


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


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

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

参考にしたウェブサイト

0 件のコメント:

コメントを投稿

FloatingActionButtonをスクロール中に消す

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