簡體   English   中英

以編程方式在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高程陰影。

而不是操縱邊距,嘗試將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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM