Android - Adding Buttons into an existing layout programatically

邮差的信 提交于 2019-12-04 11:11:52

try this simple example and modify as per your requirement

 public class MainActivity extends Activity {
        Context context;
        ScrollView scrollView;
        LinearLayout container;
        LinearLayout layout;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            context = this;
            setContentView(R.layout.activity_main);
             layout = (LinearLayout) findViewById(R.id.LinearAdd);


        }

        public void addButton(View view) {
            Button button  = new Button(MainActivity.this);
            LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT );
            button.setLayoutParams(lp);
            button.setText("ADDED");
            layout.addView(button);
        }

    }

And this your xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <LinearLayout
        android:id="@+id/LinearAdd"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="70"
        android:orientation="vertical" >

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="addButton"
            android:text="click to add" />
    </LinearLayout>

</LinearLayout>

Here is my layout fragment code:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<TableLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:stretchColumns="*"
    android:id="@+id/tableLayout">


    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_column="1">
        <Button
            android:background="@drawable/button"
            style="@style/button_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tab01sound01"
            android:layout_column="0"
            android:text="@string/buttonAlan" />
    </TableRow>

</TableLayout>

<TableLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:stretchColumns="*"
    android:layout_below="@+id/tableLayout2"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:id="@+id/thirdTable">

</TableLayout>

</RelativeLayout>

And this is the code from my first fragment tab

public class Tab1 extends Fragment {

private int buttonAmount = MainActivity.getButtonAmountTab1();
private Button[] button = new Button[buttonAmount + 1];
private Sound sound;
private String packageName = MainActivity.getStringPackageName();
private Button addButton;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    sound = MainActivity.getSound();

    View rootView = inflater.inflate(R.layout.fragment_fun, container, false);

    //This generates the Audio functionality for each button

    for (int i = 1; i < buttonAmount + 1; i++) {
        String buttonID = "tab01sound0" + i;
        int resID = getResources().getIdentifier(buttonID, "id", packageName);
        final int audioID = getResources().getIdentifier(buttonID, "raw", packageName);
        button[i] = (Button) rootView.findViewById(resID);
        registerForContextMenu(button[i]);
        button[i].setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                sound.playSound(audioID);
            }

        });

    }

    //functionality for the "+" button

    addButton = (Button) rootView.findViewById(R.id.addButton);
    addButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            CreateDialog newDialog = new CreateDialog();
            newDialog.AlertBox(getActivity());

        }
    });

    return rootView;

}

}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!