Как мне программно сгенерировать экземпляр этого пользовательского представления, который я добавил из библиотеки в Android java? - PullRequest
0 голосов
/ 29 января 2020

Я пытаюсь программно создать пользовательский макет в Android. Макет, который мне нужно создать, приведен здесь:

https://androidexample365.com/android-layout-that-simulates-physics-using-jbox2d/

Я добавил необходимые зависимости, как показано на этой странице, и я могу использовать этот макет в деятельность xml файл. Я проверил это, используя пример кода xml, приведенный на этой странице.

Я хотел бы создать этот макет программно. В качестве теста я хочу сделать такой же макет, учитывая пример кода xml на этой странице. Из здесь я узнал, как это сделать для LinearLayout, который включает в себя вызов

parent.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));  

в некоторый момент.

Но даже если этот пользовательский макет является производным от LinearLayout, класс LayoutParams был объявлен закрытым, и Android Studio выдает ошибку, если я пытаюсь использовать его в своем java коде

Этот раздел кода объявляет LayoutParams внутри PhysicsLinearLayout. java

private static class LayoutParams extends LinearLayout.LayoutParams implements PhysicsLayoutParams {

    PhysicsConfig config;

    public LayoutParams(Context c, AttributeSet attrs) {
        super(c, attrs);
        config = PhysicsLayoutParamsProcessor.process(c, attrs);
    }

    @Override
    public PhysicsConfig getConfig() {
        return config;
    }
}

Похоже, я не могу использовать соответствующий метод программного создания LinerLayout для создания этого пользовательского представления.

Как создать этот пользовательский вид программным способом? Или, другими словами, как я могу вызвать функцию setLayoutParams () для этого пользовательского представления?

Исходный код этого пользовательского макета приведен здесь: https://github.com/Jawnnypoo/PhysicsLayout

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