Программное создание интерфейса и фрейма в Android, как в Swift / iOS - PullRequest
0 голосов
/ 18 июня 2019

Я разработчик iOS Swift, учусь создавать приложения для Android.Мне было интересно, если есть эквивалентный способ динамически / программно создавать объекты пользовательского интерфейса в Android.В iOS я могу просто

let btn = UIButton() // Create a UI object
btn.frame = CGRect(x: 0, y: 0, width: 100, height: 100) // Set the frame of the object
btn.backgroundColor = UIColor.blue // Mess with the properties of the object
self.view.addSubview(btn) // Add it to a UIView

В Android кажется, что мне всегда нужно иметь XML-версию объекта.Также я не могу легко установить рамку объекта?Мне действительно нравится делать это программно, потому что мой интерфейс довольно сложен, и мне нравится использовать точные пиксельные вычисления для позиционирования.Разве нет эквивалента в Java?

Ответы [ 2 ]

1 голос
/ 18 июня 2019

Вы можете создавать объекты из кода, но это не очень рекомендуется. Конечный код НАМНОГО яснее и понятнее, если он представлен в XML-файле. Если вы хотите вставить кнопку из кода:

Button actionBtn = new Button(this); // Create a UI object
actionBtn.setLayoutParams(new ViewGroup.LayoutParams(
            ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT)); // Set the frame of the object

actionBtn.setBackgroundColor(getResources().getColor(R.color.blue)); // Mess with the properties of the object
setContentView(actionBtn); // Add it to a UIView
1 голос
/ 18 июня 2019

Вы можете динамически создавать объекты пользовательского интерфейса. Как:

Button btn = new Button(context);
btn.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));

и добавьте его в макет как:

layout.add(btn);

Помните, что если у вас нет контекста, вы не можете создавать объекты пользовательского интерфейса.

Если вы знаете, как поместить объект пользовательского интерфейса в xml, вы быстро освоите другие вещи в динамическом создании)

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