通过代码创建布局

时间:2010-07-17 11:07:07

标签: android

我通过代码创建布局,以便我可以使用下面的代码在该布局上添加多个视图。

public class AndroidPrepChart extends Activity {

    GraphicalView gView;
    GraphicalView gView2;
    GraphicalView gView3;

    BarChart barChart = new BarChart();
    BarChart2 barChart2 = new BarChart2();
    BarChart3 barChart3 = new BarChart3();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        gView = barChart.execute2(this);
        gView2 = barChart2.execute2(this);
        gView3 = barChart3.execute2(this);

        LinearLayout layout = new LinearLayout(this);

        layout.addView(gView, 150, 200);
        layout.addView(gView2, 150, 200);
        layout.addView(gView3, 150, 150);

        setContentView(layout);

     }
}

此处输出屏幕包含三个图表,但我想在第二行中定位第三个图表。请帮我解决这个问题。我是Android的初学者。

2 个答案:

答案 0 :(得分:2)

您可以通过嵌套多个LinearLayout并更改方向属性

来实现此目的 在XML中,这看起来像这样(只显示相关的元素和属性):

<LinearLayout android:orientation="vertical">
    <LinearLayout android:orientation="horizontal">
        <!-- Your first 2 graphs go in this LinearLayour -->
    </LinearLayout>

    <LinearLayout android:orientation="horizontal">
        <!-- The third graph goes in here -->
    </LinearLayout>
</LinearLayout>

您可以使用setOrientation method以编程方式操纵LinearLayout的方向。 E.g:

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

答案 1 :(得分:0)

您完全确定不能使用XML吗?从代码中编码gui要困难得多。

关于你的问题: 我想你希望第三个GraphicalView位于第二个RelativeLayout的右边。

两种方法: 使用LinearLayout或使用第二个LinearLayout layout = new LinearLayout(this); layout.addView(gView, 150, 200); LinearLayout two = new LinearLayout(this); two.setOrientation(LinearLayout.VERTICAL); two.addView(gView2, 150, 200); two.addView(gView3, 150, 150); layout.addView(two);

示例:

View

尽量不要使用setLayoutParams给出尺寸的方式,您应该使用layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

例如,您的布局应该具有以下内容:

{{1}}