0

我有一个LinearLayout垂直方向,我正在尝试向它添加三个子视图。一个视图是一个 50px 高的小视图,只在其中绘制了一个框,第二个视图是单选按钮的水平列表,第三个视图是图表。

如果我最后添加图表,一切都适合屏幕,但如果我先添加图表,它会将所有内容推离屏幕并成为屏幕上的唯一视图。该图是我的一个自定义控件,它希望尽可能大(它的onMeasure函数只返回提供的宽度和高度),我认为这就是问题所在。但我想保持它尽可能大,并且无论添加的顺序如何,布局都适合视图。

这可能吗?如果是这样,我该如何完成它?最终,我试图将图表放在顶部,将其他两个控件放在其下方,但如果我先添加图表,它会占用整个屏幕。

这是我用来创建视图的代码。这是一项学校作业,我不能为此使用 XML 布局。我被分配做一个控制,我已经完成了。我只是想做一个简单的活动来展示控件。

public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);

        layout.addView(new MovingBox(this));

        RadioGroup radioGroup = new RadioGroup(this);
        radioGroup.setOrientation(RadioGroup.HORIZONTAL);
        radioGroup.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));

        RadioButton button = new RadioButton(this);
        button.setText("Light");
        button.setLayoutParams(new RadioGroup.LayoutParams(RadioGroup.LayoutParams.MATCH_PARENT, RadioGroup.LayoutParams.WRAP_CONTENT, 1));
        radioGroup.addView(button);

        button = new RadioButton(this);
        button.setText("Dark");
        button.setLayoutParams(new RadioGroup.LayoutParams(RadioGroup.LayoutParams.MATCH_PARENT, RadioGroup.LayoutParams.WRAP_CONTENT, 1));
        radioGroup.addView(button);

        button = new RadioButton(this);
        button.setText("Colorful");
        button.setLayoutParams(new RadioGroup.LayoutParams(RadioGroup.LayoutParams.MATCH_PARENT, RadioGroup.LayoutParams.WRAP_CONTENT, 1));
        radioGroup.addView(button);

        layout.addView(radioGroup);

        // If I move these next to lines just below layout.setOrientation(...) it becomes the only thing visible
        TweenerControl tw = new TweenerControl(this);
        layout.addView(tw);

        setContentView(layout);
    }
}

最后添加图表:(一切都合适,但我想要顶部的图表)

最后添加图表

先加图:(只有图可见)

首先添加图表

4

1 回答 1

0

我在这方面做了更多的工作,我想出的解决方案是不使用LinearLayoutRelativeLayout而是使用。RelativeLayout尝试定位和调整事物的大小以使其适合,而LinearLayout只是获取事物的大小并将它们按从上到下的顺序排列,其中较高的项目LinearLayout不关心较低项目的大小LinearLayout

于 2012-09-27T17:08:57.580 回答