0

我一直在研究 StackOverflow 上的一堆示例来创建动态布局。我已经取得了一些进展,但现在停滞在一个特定的错误上。

如何使此代码填充父级的宽度?

    LinearLayout masterLayout = (LinearLayout) findViewById(R.id.button_views);

        for(int i=0; i<(launchers.length/3+1); i++){
        layout[i] = new LinearLayout(getBaseContext());
        layout[i].setLayoutParams(new LinearLayout.LayoutParams(
                ViewGroup.LayoutParams.FILL_PARENT,
                ViewGroup.LayoutParams.WRAP_CONTENT));
        layout[i].setWeightSum(3);


            for(int i1=0; i1<(3); i1++){

                launchers[i1] = new Button(this);
                launchers[i1].setText(titles[i1]);
                launchers[i1].setLayoutParams(new LinearLayout.LayoutParams(
                    ViewGroup.LayoutParams.WRAP_CONTENT,
                        ViewGroup.LayoutParams.WRAP_CONTENT));
                launchers[i1].setOnClickListener(this);
                layout[i].addView(launchers[i1]);
            }
            masterLayout.addView(layout[i]);

该代码主要按需要工作,我缺少的部分是按钮的宽度均匀,并且在屏幕的整个长度上均匀分布。

4

1 回答 1

0

发现 LinearLayout.LayoutParams 在其末尾有一个权重选项。这是适合屏幕宽度的动态按钮布局系统的最终代码。

    LinearLayout masterLayout = (LinearLayout) findViewById(R.id.button_views);

    for(int i=0; i<(launchers.length/3+1); i++){
    layout[i] = new LinearLayout(getBaseContext());
    layout[i].setLayoutParams(new LinearLayout.LayoutParams(
            ViewGroup.LayoutParams.FILL_PARENT,
            ViewGroup.LayoutParams.WRAP_CONTENT));
    layout[i].setWeightSum(3);


        for(int i1=0; i1<(3); i1++){

            launchers[i1] = new Button(this);
            launchers[i1].setText(titles[i1]);
            launchers[i1].setLayoutParams(new LinearLayout.LayoutParams(
                ViewGroup.LayoutParams.FILL_PARENT,
                    ViewGroup.LayoutParams.WRAP_CONTENT, 1.0f));
            launchers[i1].setOnClickListener(this);
            layout[i].addView(launchers[i1]);
        }
        masterLayout.addView(layout[i]);

如果有人想尝试的话,有什么方法可以让按钮始终是方形的……

于 2013-03-15T11:06:23.737 回答