[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 552
  • Last Modified:

Layout help required for Android Eclipse

I am new to Android development and have been trying to implement a particular layout using Eclipse without any joy.

What I would like to implement are two toolbars at the top and bottom of the screen and a main panel in the middle.

The bottom toolbar has four buttons with images which should be spaced evenly although the text length of each button will vary.

I thought about implementing by using a table layout with three rows.  In the third row, I have a LinearLayout and my four buttons.

Firstly is this the best way to get the layout that I want.
Secondly I can't seem to set the buttons to be of equal size and fill the screen i.e. each button takes up a quarter of the width.
0
fujihuynh
Asked:
fujihuynh
  • 3
  • 2
1 Solution
 
Dejan PažinCommented:

Here is the code that will show you how to achieve what you are after. Its all done through LinearLayout.

You have to play around with it a while and learn exactly how things work.

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.LinearLayout;

public class MyActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout mainLayout = new LinearLayout(this);
        mainLayout.setOrientation(LinearLayout.VERTICAL);
        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT);
        setContentView(mainLayout, lp);

        LinearLayout top = new LinearLayout(this);

        Button button = new Button(this);
        button.setText("long test 1");
        top.addView(button);

        button = new Button(this);
        button.setText("test 2");
        top.addView(button);

        LinearLayout bottom = new LinearLayout(this);

        button = new Button(this);
        button.setText("long test 1");
        lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        lp.weight = 1;
        bottom.addView(button, lp);

        button = new Button(this);
        button.setText("test 2");
        lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        lp.weight = 1;
        bottom.addView(button, lp);

        LinearLayout center = new LinearLayout(this);

        button = new Button(this);
        button.setText("center");

        lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT);
        center.addView(button, lp);


        lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        mainLayout.addView(top, lp);

        lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        lp.weight = 1f;
        mainLayout.addView(center, lp);

        lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        mainLayout.addView(bottom, lp);
    }
}

Open in new window

0
 
fujihuynhAuthor Commented:
Thanks but do you have an example of the XML layout resource rather than designing the layout programatically
0
 
Dejan PažinCommented:

Well, the above is not an example - it's exactly what you asked for.

I designed it for you to see how its done.  From here on it is just straight forward to translate the code to xml layout - it only requires some work.

I never use xml layout, so It would also take me some time to translate it.

It really shouldnt be that difficult. Simpy follow the rules for xml layout  and translate, say this:

----
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT);
LinearLayout mainLayout = new LinearLayout(this);
mainLayout.setOrientation(LinearLayout.VERTICAL);
----

into this:

-----
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:orientation="vertical" >   
</LinearLayout>

----
0
 
fujihuynhAuthor Commented:
Can I ask whether there are advantages to creating the layout programmatically rather than using the XML files for layout as you say you never use xml layout.
0
 
Dejan PažinCommented:

Google advertises xml layout saying it is the best way to separate gui from code. I simply dont see any benefit in that approach since I then have to reference the objects defined in xml by id and type casting them to appropriate class.

I just dont think there is any real separation of layout code and business logic if you simply put the layout in xml - in the end you have to reference it and it is basicly the same as puting the layout code into a separate method. But that is just my opinion, you should use what you are most comfortable with.

Other than that I am not aware of any other advantages.
0

Featured Post

Hire Technology Freelancers with Gigs

Work with freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely, and get projects done right.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now