Search code examples
androidandroid-fragmentsandroid-view

Adding dynamic views in a fragment


I am trying to add a dynamic view for my fragment.

I am using this code:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    Button myButton = new Button(Builtprofile.context);
    myButton.setText("Press me");
    myButton.setBackgroundColor(Color.YELLOW);

      RelativeLayout myLayout = new RelativeLayout(Builtprofile.context);
      myLayout.setBackgroundColor(Color.BLUE);

      RelativeLayout.LayoutParams buttonParams = 
                new RelativeLayout.LayoutParams(
                    RelativeLayout.LayoutParams.WRAP_CONTENT, 
                    RelativeLayout.LayoutParams.WRAP_CONTENT);

      buttonParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
      buttonParams.addRule(RelativeLayout.CENTER_VERTICAL);

      myLayout.addView(myButton, buttonParams);

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

// I want to add myLayout in place of R.layout.q1

    return rootView;

}

Solution

  • @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) 
    {
    
        Button myButton = new Button(Builtprofile.context);
        myButton.setText("Press me");
        myButton.setBackgroundColor(Color.YELLOW);
    
        RelativeLayout.LayoutParams buttonParams = new RelativeLayout.LayoutParams(
                    RelativeLayout.LayoutParams.WRAP_CONTENT, 
                    RelativeLayout.LayoutParams.WRAP_CONTENT);
    
        buttonParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
        buttonParams.addRule(RelativeLayout.CENTER_VERTICAL);
    
        View rootView = inflater.inflate(R.layout.q1, container, false);
    
        RelativeLayout myLayout = (RelativeLayout)rootView.findViewById(R.id.mainLayout);
        myLayout.setBackgroundColor(Color.BLUE);
    
        myLayout.addView(myButton, buttonParams);
    
        return rootView;
    }
    

    Have an empty xml layout with just a RelativeLayout called "mainLayout"(or what ever you want to call it). That way you can append any dynamically generated controls