Android 以编程方式设置CardView高度

Android 以编程方式设置CardView高度,android,Android,我是Android开发新手,在尝试以编程方式设置it.gmariotti.cardslib.library.view.cardwiew的最小高度时遇到问题。我创建了一个新的CardView实例,并在代码中设置了所有xml元素,但它不会影响CardView。我不会从xml中膨胀cardview CardView catCard = new CardView(getActivity()); catCard.setBackgroundColor(Color.green(0)); c

我是Android开发新手,在尝试以编程方式设置
it.gmariotti.cardslib.library.view.cardwiew
的最小高度时遇到问题。我创建了一个新的CardView实例,并在代码中设置了所有xml元素,但它不会影响CardView。我不会从xml中膨胀cardview

CardView catCard = new CardView(getActivity());

    catCard.setBackgroundColor(Color.green(0));

    catCard.setMinimumHeight(10);
    catCard.setBottom(0);
    catCard.setExpanded(false);

CardView扩展了FrameLayout,因此您应该能够设置LayoutParams。试着这样做:

 CardView.LayoutParams layoutParams = (CardView.LayoutParams)
            catCard.getLayoutParams();
    layoutParams.height = 10;
,不要忘记设置宽度也是必需的。 或者像这样创建新的LayoutParams(未测试):


这取决于您的cardview是哪个版面的子版面,在这种情况下,它位于相对版面下

我的带边距的解决方案,并且它与我完美配合
val resources=context.resources//从上下文获取资源
val-width:Int=resources.displayMetrics.widthPixels/3//获取宽度
val px=TypedValue.applyDimension(TypedValue.COMPLEX\u UNIT\u DIP,2f,resources.displayMetrics).toInt()//设置边距
val layoutParams=ViewGroup.MarginLayoutParams(宽度、ViewGroup.layoutParams.WRAP_内容)
layoutParams.marginStart=px
layoutParams.marginEnd=px

cardView.layoutParams=layoutParams

您的视图是否添加到任何视图层次结构或布局中?视图的大小取决于其布局。另外,为了确保我理解您的问题,您是否确实在从XML充气时成功地设置了高度,并且您想知道如何从代码中设置高度,还是在从XML充气时也未能在此视图上设置高度?我将CardView添加到LinearLayout中,它可以处理所有相关数据,但确实如此,上面使用的方法根本不会影响卡片。我无法设置高度,因为我不是从xml中膨胀视图,而是创建一张新卡并将其添加到正在膨胀的xml文件中。感谢您的响应,但我已经尝试使用此方法,但我遇到了一个错误。可能是因为我只设定了高度。将尝试宽度和高度。“创建新的布局参数”是什么意思?我编辑了我的答案,希望能有所帮助。您可能希望首先尝试创建新的LayoutParams,然后使用上述代码CardView.LayoutParams LayoutParams=(CardView.LayoutParams)catCard.getLayoutParams()设置高度;layoutParams.height=10;
CardView catCard = new CardView(getApplicationContext());
// sets width to wrap content and height to 10 dp ->
catCard.setLayoutParams(new CardView.LayoutParams(
     CardView.LayoutParams.WRAP_CONTENT, 10));

catCard.setMinimumHeight(10);
myCardView.setLayoutParams(new RelativeLayout.LayoutParams(20, 20));