ScrollView заполняя весь экран - PullRequest
0 голосов
/ 17 декабря 2018

Я пишу простое приложение для Android с вертикальным родительским LinearLayout.Как дети, я хочу ScrollView, два редактируемых текста, а затем кнопку.

Внутри scrollView есть несколько кнопок.Когда я помещаю туда много кнопок, ScollView занимает весь экран.Я все еще хочу, чтобы EditTexts и последняя кнопка были видны.

public class MainActivity extends AppCompatActivity
{
    LinearLayout mainLayout;
    ScrollView scrollView;
    LinearLayout fileSelector;

    EditText name;
    EditText password;
    Button submit;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        mainLayout = new LinearLayout(this);
        mainLayout.setOrientation(LinearLayout.VERTICAL);

        fileSelector = new LinearLayout(this);
        fileSelector.setOrientation(LinearLayout.VERTICAL);
        scrollView = new ScrollView(this);
        scrollView.addView(fileSelector);

        mainLayout.addView(scrollView);

        name = new EditText(this);
        password = new EditText(this);
        submit = new Button(this);
        submit.setText("Login");


        for(int i=0; i<100; i++)
        {
            Button b = new Button(this);
            b.setText("hello");
            fileSelector.addView(b);
        }

        mainLayout.addView(name);
        mainLayout.addView(password);
        mainLayout.addView(submit);

        setContentView(mainLayout);
    }


    public void onClick(View v)
    {


    }
}

enter image description here

Я хотел бы знать решение программно.

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Измените эту строку:

mainLayout.addView(scrollView);

Вместо этого:

LinearLayout.LayoutParams params = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 0);
params.weight = 1;

mainLayout.addView(scrollView, params);

LinearLayout поддерживает концепцию weight , которая будет«растягивать» представления в зависимости от того, сколько места доступно в родительском LinearLayout.

В этом случае вы устанавливаете ScrollView равным нулю пикселей, в то время как вы оставляете два EditTexts и Button для отправки их нормальным размером.,Это не заполнит LinearLayout, поэтому применяется вес.Все виды с весом получают дополнительное пространство, разделенное между ними на основе соотношения их весов, но здесь у нас есть только один вид с весом, поэтому он просто получает все дополнительное пространство.

Это означает, что ваши EditTexts иКнопка отправки всегда будет видна, и ScrollView получит все оставшееся пространство независимо от размера экрана.

0 голосов
/ 17 декабря 2018

Решением было добавить это ... scrollView.getLayoutParams (). Height = 200;Что я получил из этого поста Установить ширину и высоту ImageView программно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...