ulyk
ulyk

Reputation: 53

How to make two buttons on the same row in eclipse programmatically?

LinearLayout table = (LinearLayout)findViewById(R.id.linearlayout);

btnControl = new Button(this);
    btnControl.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
    btnControl.setPadding(0,40,0,40);//x,y,w,h
    btnControl.setBackgroundColor(Color.parseColor("#1C344E"));
    btnControl.setTextColor(Color.WHITE);
    setMargins(btnControl, 50, 50, 50, 50);

btnLogs = new Button(this);
        btnLogs.setLayoutParams(new LayoutParams(380, LayoutParams.WRAP_CONTENT));
        btnLogs.setPadding(0,40,0,40);//x,y,w,h
        btnLogs.setBackgroundColor(Color.parseColor("#1C344E"));
        btnLogs.setTextColor(Color.WHITE);
        setMargins(btnLogs, 50, 50, 50, 50);
        btnLogs.setId(5);
        btnLogs.setOnClickListener(this);

        btnTermLogs = new Button(this);
        btnTermLogs.setLayoutParams(new LayoutParams(380, LayoutParams.WRAP_CONTENT));
        btnTermLogs.setPadding(0,40,0,40);//x,y,w,h
        btnTermLogs.setBackgroundColor(Color.parseColor("#CC6675"));
        btnTermLogs.setTextColor(Color.WHITE);
        setMargins(btnLogs, 50, 50, 50, 50);
        btnTermLogs.setId(6);
        btnTermLogs.setOnClickListener(this);

btnLogout = new Button(this);
    btnLogout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
    btnLogout.setPadding(0,40,0,40);//x,y,w,h
    btnLogout.setBackgroundColor(Color.parseColor("#CC6675"));
    btnLogout.setTextColor(Color.WHITE);

    table.addView(btnLogs);
        table.addView(btnTermLogs);

I want the two buttons to be aligned together horizontally. However it just align themselves vertically which i dont want.

My buttons look like this:

NO

what i want is to look like this: YES

Upvotes: 0

Views: 240

Answers (5)

Vigneswaran A
Vigneswaran A

Reputation: 590

Try this below function. It will help

public void addButtons(){
    LinearLayout table = (LinearLayout)findViewById(R.id.linearlayout);

    LinearLayout linearLayout1 = new LinearLayout(this);
    linearLayout1.setOrientation(LinearLayout.VERTICAL);
    LinearLayout.LayoutParams LayoutParamsview = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);

    Button button1 = new Button(this);
    button1.setText("Btn 1");
    button1.setLayoutParams(LayoutParamsview);

    linearLayout1.addView(button1);
    table.addView(linearLayout1);

    //
    LinearLayout linearLayout2 = new LinearLayout(this);
    linearLayout2.setOrientation(LinearLayout.HORIZONTAL);

    Button button2 = new Button(this);
    button2.setText("Btn 2");
    button2.setLayoutParams(LayoutParamsview);

    Button button3 = new Button(this);
    button3.setText("Btn 3");
    button3.setLayoutParams(LayoutParamsview);

    linearLayout2.addView(button2);
    linearLayout2.addView(button3);
    table.addView(linearLayout2);

    //
    LinearLayout linearLayout3 = new LinearLayout(this);
    linearLayout3.setOrientation(LinearLayout.VERTICAL);

    Button button4 = new Button(this);
    button4.setText("Btn 4");
    button4.setLayoutParams(LayoutParamsview);

    linearLayout3.addView(button4);
    table.addView(linearLayout3);

}

enter image description here

Upvotes: 2

Hatchi Roku
Hatchi Roku

Reputation: 1004

You can create another XML file, that contains a horizontal LinearLayout, then inflate it and insert the two buttons into it, and then add the whole horizontal LinearLayout to the vertical LinearLayout:

  1. Create an XML file e.g. horizontal_layout.xml:

    <LinearLayout
        android:id="@+id/horizontal_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
    
    // You will insert the buttons programmatically.
    
    </LinearLayout>
    
  2. In your Activity use this method to inflate the Layout:

        LinearLayout verticalLinearLayout = rootView.findViewById(R.id.vertical_linear_layout);
    
    // Add the first vertical Button regularly.
    Button firstVerticalButton = new Button(Activity.this);
    firstVerticalButton.setText("Vertical");
    verticalLinearLayout.addView(firstVerticalButton);
    
    // Inflate the horizontal LinearLayout and add the two horizontal buttons.
    LinearLayout horizontalLinearLayout = getLayoutInflater().inflate(R.layout.horizontal_layout,
            linearLayout, false);
    
    Button horizontalOne = new Button(Activity.this);
    horizontalOne.setText("Horizontal");
    LinearLayout.LayoutParams childParam = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);
    childParam1.weight = 0.5f;
    horizontalOne.setLayoutParams(childParam);
    
    Button horizontalTwo = new Button(Activity.this);
    horizontalTwo.setText("Horizontal");
    LinearLayout.LayoutParams childParam2 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    childParam1.weight = 0.5f;
    horizontalTwo.setLayoutParams(childParam2);
    
    horizontalLinearLayout.addView(horizontalOne);
    horizontalLinearLayout.addView(horizontalTwo);
    
    // Insert the inflated layout to the main layout.
    verticalLinearLayout.addView(horizontalLinearLayout);
    
    // Add the second vertical Button
    Button secondVerticalButton = new Button(Activity.this);
    secondVerticalButton.setText("Vertical");
    verticalLinearLayout.addView(secondVerticalButton);
    

Upvotes: 1

IntelliJ Amiya
IntelliJ Amiya

Reputation: 75788

  • You should use setLayoutParams
  • Add setOrientation(LinearLayout.HORIZONTAL);

Set the layout parameters associated with this view. These supply parameters to the parent of this view specifying how it should be arranged. There are many subclasses of ViewGroup.LayoutParams, and these correspond to the different subclasses of ViewGroup that are responsible for arranging their children.

Code Structure

    LinearLayout table = (LinearLayout)findViewById(R.id.linearlayout);
    table.setOrientation(LinearLayout.HORIZONTAL);

    Button Btn1 = new Button(Activity.this);
    Btn1.setText("Button 1");
    LinearLayout.LayoutParams childParam = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);
    childParam.weight = 0.5f;
    Btn1.setLayoutParams(childParam);

    Button Btn2 = new Button(Activity.this);
    Btn2.setText("Button 2");
    LinearLayout.LayoutParams childParam2 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    childParam2.weight = 0.5f;
    Btn2.setLayoutParams(childParam2);

    table.addView(Btn1);
    table.addView(Btn2);

Respected OP

enter image description here

Upvotes: 1

InsaneCat
InsaneCat

Reputation: 2161

Horizontal linear layout supports left to right widgets approach, When app developer selects horizontal orientation in linear layout then it will automatically start adding components and widgets to left to right side after adding them. So here is the complete step by step tutorial for Creating horizontal linearlayout programmatically android.

Write this code

     //Creating LinearLayout.
     LinearLayout Horizontallinearlayout = new LinearLayout(this);

     //Setting up LinearLayout Orientation
     Horizontallinearlayout.setOrientation(LinearLayout.HORIZONTAL);

     LayoutParams Horizontallinearlayoutlayoutparams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 

     setContentView(Horizontallinearlayout, Horizontallinearlayoutlayoutparams);

     LayoutParams LayoutParamsview = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

     //Creating textview .
     Button button1 = new Button(this);
     Button button2 = new Button(this);

     //Adding text to TextView.
     button1.setText("First Button");
     button2.setText("Second Button");

     button1.setLayoutParams(LayoutParamsview);
     button2.setLayoutParams(LayoutParamsview);

     //Adding textview to linear layout using Add View function.
     Horizontallinearlayout.addView(button1);
     Horizontallinearlayout.addView(button2);

Hope this helps you

Upvotes: 1

Dharmishtha
Dharmishtha

Reputation: 1343

use table.setOrientation(LinearLayout.HORIZONTAL); .

Hope it Helps.

Upvotes: 0

Related Questions