Android Creating button dynamically and fill layout

前端 未结 6 1513
长情又很酷
长情又很酷 2021-01-01 05:25

I\'m creating a button dynamically. The number of button is depend on the size of arraylist. the problem is, after creating the button I will add to the layout using addview

6条回答
  •  醉梦人生
    2021-01-01 05:56

    try this its working fine

    this.row = (LinearLayout)findViewById(R.id.tags); this.row.setOrientation(LinearLayout.VERTICAL); LinearLayout one = new LinearLayout(this);

        //get the size of the screen
        Display display = getWindowManager().getDefaultDisplay();
        this.screenWidth = display.getWidth();  // deprecated
        this.screenHeight = display.getHeight();// depreceted
    
        for(int i=0; i<6; i++) {
    
            one.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
    
            this.button = new Button(this);
            button.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
            if(i==0) {
                this.button.setText("Muhammad Aamir");
            } else if(i==1) {
                this.button.setText("Ahsan");
            } else if(i==2) {
                this.button.setText("Mujahid");
            } else if(i==3) {
                this.button.setText("Waqas");
            } else if(i==4) {
                this.button.setText("Ali");
            } else {
                this.button.setText("Ahmer");
            }
    
            //get the size of the button text
            Paint mPaint = new Paint();
            mPaint.setAntiAlias(true);
            mPaint.setTextSize(button.getTextSize());
            mPaint.setTypeface(Typeface.create(Typeface.SERIF, Typeface.NORMAL));
            float size = mPaint.measureText(button.getText().toString(), 0, button.getText().toString().length());
            size = size+14;
            this.totalTextWidth += size;
    
            if(totalTextWidth < screenWidth) {
                one.addView(button);
            } else {
                this.row.addView(one);
                one = new LinearLayout(this);
                one.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
                one.addView(button);
                this.totalTextWidth = size;
            }
        }
        this.row.addView(one);
    }
    

提交回复
热议问题