以编程方式在 cardview 中设置边距
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 高度的余量
谢谢
如果我理解正确,您是在尝试避免裁剪 CardView
的高程阴影。
不要操纵边距,尝试在初始化 CardView
时设置 cardUseCompatPadding to true
and if you are changing elevation dynamically, you should call setMaxCardElevation(float)。 (您可以通过 xml 以及编程方式设置)。
为 CardView
设置最大海拔让它占据 space 以获得更大的阴影,但它也会添加此 space 以获得较低的海拔。
顺便说一句,如果你想为某些视图设置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();
这将设置布局高度、宽度,然后将边距值放在卡片视图上。
这是代码
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 高度的余量
谢谢
如果我理解正确,您是在尝试避免裁剪 CardView
的高程阴影。
不要操纵边距,尝试在初始化 CardView
时设置 cardUseCompatPadding to true
and if you are changing elevation dynamically, you should call setMaxCardElevation(float)。 (您可以通过 xml 以及编程方式设置)。
为 CardView
设置最大海拔让它占据 space 以获得更大的阴影,但它也会添加此 space 以获得较低的海拔。
顺便说一句,如果你想为某些视图设置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();
这将设置布局高度、宽度,然后将边距值放在卡片视图上。