【问题标题】:Dynamically Adding LinearLayouts in Android在 Android 中动态添加线性布局
【发布时间】:2013-03-07 02:10:52
【问题描述】:

我正在尝试动态添加 LinearLayouts,但它不起作用。我想我只需要另一双眼睛来审视它。谁能帮帮我?

LinearLayout parentLayout = (LinearLayout)findViewById(R.id.parentLayout);
        lLayout = new LinearLayout[8];
        for(int i = 0; i < lLayout.length; i++) {
            lLayout[i] = new LinearLayout(this);
            lLayout[i].setId(i);
            lLayout[i].setOrientation(LinearLayout.HORIZONTAL);
            if(i%2 == 0) {
                lLayout[i].setBackgroundColor(Color.GREEN);
            } else {
                lLayout[i].setBackgroundColor(Color.MAGENTA);
            }
            parentLayout.addView(lLayout[i]);
        }

【问题讨论】:

  • 也许可以尝试将图像添加到线性布局中,以便它们具有大小。也许它们正在被添加,但你看不到它们,因为它们是空的?或者带有一些虚拟文本的文本视图..
  • 你还没有添加 ListViews,不知道你为什么不接受我的编辑...

标签: android dynamic view android-linearlayout


【解决方案1】:

你需要设置 LayoutParams,试试添加这个:

lLayout[i].setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));

【讨论】:

  • 谢谢,您知道为什么它们仍然彼此相邻而不是彼此下方显示吗?
  • 确保您的父 LinearLayout 设置为垂直方向
【解决方案2】:

看起来您正在尝试使用线性布局自己制作列表视图,而不是实际使用已支持的 ListView。

如果你真的想这样做,你应该首先给视图内的布局一个宽度和高度。我还将列表放在滚动视图中,以防它溢出外部布局。

【讨论】:

  • 我的 xml 中有一个滚动视图。 parentLayout 是 ScrollView 内部的 LinearLayout
  • 好的,如果你只是添加 8 个内部布局应该没问题。但是如果你有数千个,你会想要使用 ListView。它使用默认适配器对处理这个问题进行了一些优化,添加延迟加载也有帮助。
  • 谢谢,我会记住的!我实际上最多只有 5-8 个用于真正的应用程序!
【解决方案3】:

不妨试试这个

LinearLayout parentLayout = (LinearLayout)findViewById(R.id.parentLayout);
        lLayout = new LinearLayout[8];
        for(int i = 0; i < lLayout.length; i++) {
            lLayout[i] = new LinearLayout(this);
            lLayout[i].setId(i);
            lLayout[i].setOrientation(LinearLayout.HORIZONTAL);
            if(i%2 == 0) {
                lLayout[i].setBackgroundColor(Color.GREEN);
            } else {
                lLayout[i].setBackgroundColor(Color.MAGENTA);
            }

            LinearLayout.LayoutParams myLayoutParams = new LinearLayout.LayoutParams(
                    LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);

            myLayoutParams.leftMargin = 0;
            myLayoutParams.topMargin = 50 * i;
            myLayoutParams.width = myScreenSize; //e.g. 480
            myLayoutParams.height = 50;

            lLayout[i].setLayoutParams(myLayoutParams);

            parentLayout.addView(lLayout[i]);
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多