Для приложения, над которым я работаю, требуется динамический макет, отображающий горизонтальный просмотр профилей. Профиль - это просто RelativeLayout с изображением и текстом. Поскольку я получаю данные из файла данных, мне нужно создать относительный макет для каждого из профилей. Сначала я создал каждый RelativeLayout программно в цикле for, а затем добавил его в родительское представление. Это работает, но я не хочу делать это таким образом. Я хочу использовать разные файлы макетов в зависимости от размера экрана устройства и т. Д.
Тогда я подумал. Что ж, если бы у меня был макет с одним профилем? Мой код может получить этот профиль с findViewById()
, а затем создать новые на его основе! Другими словами:
// get the layout
profileLayout = (LinearLayout) findViewById(R.id.profileLayout);
// get the first profile in the layout
originalProfile = (RelativeLayout) findViewById(R.id.profile1);
// make copy of profile
temporaryProfile = originalProfile;
// make changes to the this profile and add it back
profileLayout.addView(temporaryProfile);
Конечно, это не работает, потому что это java, а временный профиль теперь является ссылкой на оригинальный файл. Так есть ли способ сделать копию этого RelativeLayout? Я знаю о LayoutInflater, но до сих пор не понимаю, как он работает. Существует также Object.clone()
.