3

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]);
        }
4

3 に答える 3

2

LayoutParams を設定する必要があります。これを追加してみてください。

lLayout[i].setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));
于 2013-03-07T02:26:21.173 に答える
0

既にサポートされている ListView を実際に使用するのではなく、linearlayouts を使用して自分でリストビューを作成しようとしているようです。

実際にそうしようとしている場合は、最初にビュー内のレイアウトに幅と高さを指定する必要があります。リストが外側のレイアウトからオーバーフローした場合に備えて、リストをスクロールビューに入れます。

于 2013-03-07T02:24:40.863 に答える
0

多分これを試してみてください

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]);
        }
于 2013-03-07T02:37:27.217 に答える