【问题标题】:Set CardView height programmatically以编程方式设置 CardView 高度
【发布时间】:2020-06-16 20:01:00
【问题描述】:

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

CardView catCard = new CardView(getActivity());

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

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

【问题讨论】:

  • 您的视图是否添加到任何视图层次结构或布局中?视图的大小取决于其布局。另外,为了确保我理解您的问题,您是否确实在从 XML 膨胀时成功设置了高度,并且您想知道如何从代码中做到这一点,或者您是否也未能在此视图上设置高度从 XML 膨胀?
  • 我将 CardView 添加到 LinearLayout 中,它可以处理所有相关数据,但是上面使用的方法根本不会影响卡片。我无法设置高度,因为我没有从 xml 膨胀视图,而是创建一个新卡并将其添加到正在膨胀的 xml 文件中。

标签: android


【解决方案1】:

CardView 扩展了 FrameLayout,因此您应该能够设置 LayoutParams。尝试这样的事情:

 CardView.LayoutParams layoutParams = (CardView.LayoutParams)
            catCard.getLayoutParams();
    layoutParams.height = 10;

,别忘了设置宽度也是必需的。 或者像这样创建新的 LayoutParams(未测试):

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);

【讨论】:

  • 感谢您的回复,但我已经尝试使用它,但出现错误。可能是因为我只设置了高度。将尝试宽度和高度。 “创建新的 LayoutParams”是什么意思?
  • 我编辑了我的答案,希望对您有所帮助。您可能想先尝试创建新的 LayoutParams,然后使用上面的代码设置高度 CardView.LayoutParams layoutParams = (CardView.LayoutParams) catCard.getLayoutParams(); layoutParams.height = 10;
【解决方案2】:
myCardView.setLayoutParams(new RelativeLayout.LayoutParams(20, 20));

这取决于您的卡片视图是哪个布局的子视图,在这种情况下它位于相对布局下

【讨论】:

    【解决方案3】:

    我的带边距解决方案,它非常适合我
    val resources = context.resources // get resources from context val width: Int = resources.displayMetrics.widthPixels / 3 //get width val px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 2f, resources.displayMetrics).toInt() //set margin val layoutParams = ViewGroup.MarginLayoutParams(width, ViewGroup.LayoutParams.WRAP_CONTENT) layoutParams.marginStart = px layoutParams.marginEnd = px cardView.layoutParams = layoutParams

    【讨论】:

      猜你喜欢
      • 2017-07-12
      • 1970-01-01
      • 2019-10-28
      • 1970-01-01
      • 2018-11-14
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2013-12-14
      相关资源
      最近更新 更多