shobhit
shobhit

Reputation: 51

create layout through code

I created layout through code so that i can add multiple views on that layout using code below.

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);

     }
}

Here output screen contains three charts but i want to position third chart in the second line. Please help me to solve this problem. I am beginner in Android.

Upvotes: 3

Views: 10570

Answers (2)

chrisbunney
chrisbunney

Reputation: 5946

You can achieve this by nesting multiple LinearLayouts and changing the orientation property

in XML this would look something like this (showing only the relevant elements and attributes):

<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>

You can programmatically manipulate the orientation of the LinearLayout by using the setOrientation method. E.g:

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

Upvotes: 2

Macarse
Macarse

Reputation: 93133

Are you completely sure that you can't do it with an XML? Coding gui from the code is quite more difficult.

In relation to your question: I guess you want the third GraphicalView to be to the right of the second one.

Two ways to do it: Using a RelativeLayout or using a second LinearLayout.

Example:

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);

Try not using that way of giving size to a View, you should use setLayoutParams.

For instance your layout should have something like:

layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

Upvotes: 0

Related Questions