java - CardView 和 LinearLayout 的 TextView 子项根本不显示

标签 java android android-studio

我一直在尝试为我想出的一个简单应用程序编写一些动态生成的布局代码。我想显示一排垂直的卡片,每张卡片都包含未定义数量的垂直对齐的文本框。

我编写了代码来生成这些并填充文本,但它似乎不起作用,我一生都无法弄清楚。

我是 Android Studio 的新手,Java 对我来说也还比较陌生,所以我很可能会错过一些非常明显的东西。

我尝试在 A.Studio 中使用几种不同类型的 View ,到目前为止,大多数都可以单独工作,但没有一个可以包含在对我来说是理想的卡片中。动态创建和编辑 textView 的属性效果很好,但是一旦我包含了卡片 View ,它们就不再使用完全相同的代码出现。

    //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 外观和代码库就会变得更加高效和干净。

RecyclerView example Youtube

关于java - CardView 和 LinearLayout 的 TextView 子项根本不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57909988/

相关文章:

android - Cocos2d-x 3.14 Android崩溃

java - Android Studio onClick 设置文本问题

java - 抽象类的对象是在使用匿名内部类时创建的吗?

java - Java 中的builtin_expect?

java - Android Studio 4完整的离线设置

java - 已签名的 Apk 不断崩溃

android - 'Resource.Dimension' 不包含定义

java - getExternalStorageDirectory 和 getExternalStoragePublicDirectory 之间的区别?

java - 如何使用计时器显示和隐藏 Swing 中的图像?

android - 单选ListView自定义Row Layout