java - CardView 和带有 TextView 子项的 LinearLayout 根本不显示
问题描述
我一直在尝试为我想出的一个简单的应用程序编写一些动态生成的布局代码。我想显示一排垂直的卡片,每个卡片都包含未定义数量的垂直对齐的文本框。
我编写了代码来生成这些并填充文本,但它似乎没有工作,我无法在我的一生中弄清楚它。
我是 Android Studio 的新手,Java 对我来说还是比较新鲜的,所以我很可能在这里遗漏了一些非常明显的东西。
我已经尝试在 A. Studio 中使用几种不同类型的 View,到目前为止,大多数都是自己工作的,但没有一个可以包含在一张适合我的卡片中。动态创建和编辑 textViews 的属性可以正常工作,但是一旦我包含卡片视图,它们就不再使用完全相同的代码出现。
//Define Params
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(left,top,right,bottom);
//Add a card for each ingredient
for (Ingredient ing : ingredients)
{
CardView card = new CardView(this);
CardView.LayoutParams cardParams = new CardView.LayoutParams(CardView.LayoutParams.WRAP_CONTENT, 200);
card.setLayoutParams(cardParams);
card.setRadius(15);
card.setPadding(25,25,25,25);
card.setElevation(10);
card.setMaxCardElevation(30);
card.setBackgroundColor(Color.DKGRAY);
//Make a grid for each card, text on the left, image on the right
LinearLayout linearLayoutInCard = new LinearLayout(card.getContext());
LinearLayout.LayoutParams layoutParamsInCard = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
linearLayoutInCard.setLayoutParams(layoutParamsInCard);
card.addView(linearLayoutInCard);
for(int x = 0; x < 3; x++)
{
TextView textView = new TextView(this);
textView.setLayoutParams(params);
textView.setPadding(left, top, right, bottom);
textView.setTextSize(15);
textView.setElevation(11);
textView.setTextColor(Color.WHITE);
linearLayoutInCard.addView(textView);
switch (x)
{
case 0:
textView.setText(ing.name);
break;
case 1:
textView.setText(ing.price);
break;
case 2:
//textView.setText(ing.calories);
break;
}
}
我期待一排卡片与文本框垂直对齐,每个卡片都有自己的内容(整个脚本现在只会制作一张卡片,但这是数据驱动的东西)但是当我运行应用程序时,我得到什么都没有,只是一个空白屏幕。
解决方案
在进一步冒险之前……这可能是 XY 问题的一个例子。
也许看看 RecyclerView 选项?
RecyclerViews 完全设计用于管理 UI 外观和更改/滚动数据集的响应性。
起初它们可能有点“到底是什么”......但是一旦编写了几次,您的 UI 外观和代码库就会更加高效和干净。
推荐阅读
- fn - Fn 函数在超时前终止
- python-3.x - Python 异常没有详细信息
- javascript - 使用 selenium web 驱动程序在地图中的特定位置执行右键单击
- java - 如何在Android中实现侧板
- ssl - SSL/TLS 证书管理(密钥、crt 和 pem)
- kubernetes - 抱怨“extensions/v1beta1 Ingress 已弃用”的日志
- delphi - Azure 存储表访问
- c - 在 C 中使用宏而不是函数有什么好处?
- python - 如何从熊猫数据框中按变量删除第一年的数据?
- stripe-payments - 跨多个域使用 Stripe api 密钥