Динамическая RelativeLayout в Android: прокрутка не работает - PullRequest
0 голосов
/ 08 апреля 2011

Я хочу поместить свиток в вертикальной ориентации в Относительный макет, который я создал программно. Но мой свиток не работает. Может кто-нибудь мне помочь? Вот код, который я использую:

RelativeLayout layout = (RelativeLayout) findViewById(R.id.screen1); 
    for (i = 1; i < 20; i++) { 
        RelativeLayout.LayoutParams p = new 
        RelativeLayout.LayoutParams( 
                150, 
                RelativeLayout.LayoutParams.WRAP_CONTENT
        );
        layout.setScrollContainer(true);
        ScrollView vscroll = new ScrollView(this);
        vscroll.setFillViewport(true);
        layout.setVerticalScrollBarEnabled(true);
        layout.addView(vscroll);
        p.addRule(RelativeLayout.BELOW, i-1);
        p.addRule(RelativeLayout.CENTER_HORIZONTAL);
        Button buttonView = new Button(this);
        buttonView.setId(i);
        buttonView.setText(i);
        buttonView.setLayoutParams(p);
        buttonView.setOnClickListener(new View.OnClickListener() {
            public void onClick(View arg0) {
            Dialog(((Button)arg0).getId());
            } });
        layout.addView(buttonView, p);
    } 

Ответы [ 2 ]

1 голос
/ 08 апреля 2011

Я думаю, вам нужно добавить свои ButtonViews в ScrollView вместо макета. ScrollView - это контейнерное представление (например, RelativeLayout). Я думаю, что ваш код делает добавление ScrollView с 0 высотой в верхнюю часть вашего RelativeLayout, затем кнопку после этого. Поскольку кнопка отсутствует в ScrollView, ваши 20 кнопок не будут прокручиваться.

0 голосов
/ 03 января 2014

Попробуйте, как показано ниже:

vscroll.addView(button);
...