[英]Set margins in cardview programmatically
這是代碼
CardView.LayoutParams layoutParams = new CardView.LayoutParams(
CardView.LayoutParams.WRAP_CONTENT, CardView.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(100,100,100,100);
CardView cv = new CardView(this);
cv.setLayoutParams(layoutParams);
無論如何,從xml開始工作 -
android:layout_marginLeft="100dp"
可能是什么原因? 我錯過了什么!
我需要提升卡片的保證金
謝謝
如果我理解正確,您試圖避免裁剪CardView
高程陰影。
而不是操縱邊距,嘗試將cardUseCompatPadding設置為true
, 如果要動態更改高程 ,則應在初始化CardView
時調用setMaxCardElevation(float) 。 (你可以通過xml和編程方式設置)。
設置CardView
最大高程CardView
讓它占用更大陰影的空間,但它也會為較低的高度添加此空間。
順便說一下,如果要為某些視圖設置LayoutParams
,則需要使用這些視圖,這些視圖對應於視圖的父視圖 。
示例: LinearLayout
有一個TextView
。
TextView textView = (TextView) findViewById(R.id.text_view);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
textView.setLayoutParams(layoutParams);
您可以在卡片視圖中添加高程填充
CardView card = new CardView(this);
LinearLayout.LayoutParams params =
new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
card.setLayoutParams(params);
card.setContentPadding(2, 1, 2, 1);
card.setMaxCardElevation(5);
card.setCardElevation(9);
您可以根據自己的要求嘗試這個塊。
parentCardView.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, (int) Utility.pxFromDp(getActivity(), 300)));
ViewGroup.MarginLayoutParams layoutParams =
(ViewGroup.MarginLayoutParams) binding.parentCard.getLayoutParams();
layoutParams.setMargins(16, 0, 16, 0);
binding.parentCard.requestLayout();
這將設置布局高度,寬度,然后將保證金值放在卡片視圖上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.