如何以编程方式设置 CardView 的高度?

How to set CardView's elevation programmatically?

您好,我只想以编程方式设置 cardview 的高度,但似乎不起作用,这是我的代码:

CardView cardView = new CardView(this);
    LinearLayout.LayoutParams params =
            new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT);
    cardView.setLayoutParams(params);
    LinearLayout linearLayout = (LinearLayout)findViewById(R.id.linear);
    cardView.setCardBackgroundColor(Color.WHITE);
    cardView.setCardElevation(1000);
    linearLayout.addView(cardView);

尽管 setCardEleveation 设置为 1000,但 cardview 没有任何变化,有什么问题吗? 那里有一些相关的问题,但我找不到答案。

使用 cardview.setMaxCardElevation(8); 代替

从高程看,仅视图阴影。当海拔约为 210、可能是 20 而不是更多时,它会很好地显示出来。当你设置类似 1000 的东西时,由于距离很远,阴影几乎看不见(就像在现实世界中一样:))。

尝试设置较低的高度。

好吧,我遇到了一个棘手的问题,我的 Cardview 包裹了它的父对象,所以没有 space 可以用来显示它的影子。最后,我在 Cardview 中添加了边距,现在可以使用了!!

最小值api为15,最大值为21

Image of the code

CardView cardView = new CardView(this);
        LinearLayout.LayoutParams params =
                new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,200);
        cardView.setLayoutParams(params);
        LinearLayout linearLayout = (LinearLayout)findViewById(R.id.linear);
        cardView.setCardBackgroundColor(Color.WHITE);
        cardView.setCardElevation(20);
        linearLayout.addView(cardView);
然而,

XML 属性 "cardElevation" 将为您实现这一目标。由于 Material 设计指南规定 CardView 高度只能为 8dp,因此您也可以在 XML 文件中一劳永逸地设置它。