как динамически добавлять разные кнопки - PullRequest
0 голосов
/ 19 августа 2011

У меня есть массив кнопок (разных размеров и т. Д.), Которые настроены из и XML-файла (написано мной).Я хочу добавить эти кнопки внизу экрана, и когда ряд кнопок заканчивается, просто начните новую строку и добавляйте кнопки, пока не закончится массив.Я хочу отметить, что я не устанавливаю размер кнопок в файле XML, поэтому я не знаю размер с самого начала.Другая проблема заключается в том, что после или до того, как я добавляю кнопку в макет программно с layout.addView (button), метод button.getWidth () возвращает 0, поскольку элементы пользовательского интерфейса еще не прорисованы в пользовательском интерфейсе.Я также переопределил метод onLayout (), но все еще не смог перерисовать кнопки.

Если у вас есть идеи, пожалуйста, помогите.Спасибо

Ответы [ 2 ]

0 голосов
/ 12 марта 2012

Вот как я это сделал.Я переопределил метод onMeasure () макета, содержащего кнопки.

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int specSize =  MeasureSpec.getSize(widthMeasureSpec);
        this.width = specSize;

        specSize =  MeasureSpec.getSize(heightMeasureSpec);
        this.height = specSize;

        //now you can use the sizes before the layout is drawn
        this.webview.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.FILL_PARENT,this.height - this.menuBarHeight) );

        //don't forget for the parent method! 
        //but at the end, after the measures are done
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);   
    }
0 голосов
/ 24 августа 2011

Ну, вы можете заставить кнопку принимать тот же размер, используя свойство weight.В этом случае решите, сколько кнопок вам нужно в строке, и используйте цикл for, чтобы сделать это соответствующим образом.Если вам нужна ширина, вы можете использовать что-то вроде

Добавить это в свой onCreate

ViewTreeObserver vto        =   layout.getViewTreeObserver();
            vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
                @Override
                public void onGlobalLayout() {
                    You should be able to get the width and height
                    over here.

                    layout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                }
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...