20 / 19 / 1
Регистрация: 13.08.2012
Сообщений: 779

Динамическое создание интерфейса

18.02.2015, 14:20. Показов 2388. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые. Помогите справиться с задачей.
Хочу динамически создать несколько LinearLayout c TextView, ImageView и Button (как на картинке В верху TextView по центру ImageView ниже Button). И все это закинуть в HorizontalScrollView.
Как это правильно сделать ?
Есть что-то вроде этого:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
hsv = (HorizontalScrollView)findViewById(R.id.horizontalScrollView);
        LinearLayout.LayoutParams lParams = new LinearLayout.LayoutParams(
                wrapContent, wrapContent);
        lParams.gravity = Gravity.CENTER;
        if (folder.exists()) {
            String[] files = folder.list();
 
            for (int i = 0; i < files.length; i++){
                ImageView iv = new ImageView(this);
                iv.setImageBitmap(BitmapFactory.decodeFile(path+"/"+files[i]));
 
                Button btn = new Button(this);
                btn.setText("Открыть");
 
                TextView tv = new TextView(this);
                tv.setText("Название");
 
                LinearLayout ll = new LinearLayout(this);
                ll.addView(btn);
                ll.addView(tv);
                ll.addView(iv, lParams);
 
                hsv.addView(ll, lParams);//тут падает
            }
Но при добавлении в HorizontalScrollView вылетает прога.
Миниатюры
Динамическое создание интерфейса  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.02.2015, 14:20
Ответы с готовыми решениями:

Динамическое создание интерфейса
Уважаемые форумчане, не подскажите как можно реализовать создание интерфейса в активити по переданному приложению xml-файлу, чтобы...

Динамическое создание элементов интерфейса
Здравствуйте. Мне интересно знать, как динамически создавать элементы интерфейса. Например, в цикле вызывается метод, который создает...

Динамическое создание элементов интерфейса
Здравствуйте. Есть небольшая проблема с динамическим созданием элементов интерфейса. Не понимаю как это сделать в теории: есть 2 кнопки, по...

8
20 / 19 / 1
Регистрация: 13.08.2012
Сообщений: 779
18.02.2015, 16:10  [ТС]
Причина падения в том что нужно добавлять RelativeLayout а не LinearLayout . Но как сделать все красиво пока не понятно.

Добавлено через 1 час 34 минуты
Подскажите как задать программно такие свойства как:
layout_alignParentTop для TextView
layout_centerHorizontal для TextView
orientation - для RelativeLayout
?
0
-3 / 16 / 2
Регистрация: 21.11.2013
Сообщений: 151
18.02.2015, 18:35
http://stackoverflow.com/quest... horizontal
1
20 / 19 / 1
Регистрация: 13.08.2012
Сообщений: 779
18.02.2015, 19:27  [ТС]
FreakMurderer, спасибо, а еще интересует очень вопрос о генерации id для view. Подскажите как это правильно делать ? Насколько я понял там должны быть только положительные числа. Но как именно сгенерировать уникальный id не понятно.
0
-3 / 16 / 2
Регистрация: 21.11.2013
Сообщений: 151
18.02.2015, 19:40
NEvOl,
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class ViewIdGenerator {
    private static final AtomicInteger sNextGeneratedId = new AtomicInteger(1);
 
    @SuppressLint("NewApi")
    public static int generateViewId() {
 
        if (Build.VERSION.SDK_INT < 17) {
            for (;;) {
                final int result = sNextGeneratedId.get();
                // aapt-generated IDs have the high byte nonzero; clamp to the range under that.
                int newValue = result + 1;
                if (newValue > 0x00FFFFFF)
                    newValue = 1; // Roll over to 1, not 0.
                if (sNextGeneratedId.compareAndSet(result, newValue)) {
                    return result;
                }
            }
        } else {
            return View.generateViewId();
        }
 
    }
}
Отсюда
http://wenda.baba.io/questions... licts.html
1
20 / 19 / 1
Регистрация: 13.08.2012
Сообщений: 779
19.02.2015, 16:01  [ТС]
Цитата Сообщение от FreakMurderer Посмотреть сообщение
View.
что это такое ?
1
-3 / 16 / 2
Регистрация: 21.11.2013
Сообщений: 151
19.02.2015, 16:13
Цитата Сообщение от NEvOl Посмотреть сообщение
что это такое ?
В каком смысле ?
View это - http://developer.android.com/r... /View.html
1
20 / 19 / 1
Регистрация: 13.08.2012
Сообщений: 779
19.02.2015, 17:27  [ТС]
вроде разобрался)
0
20 / 19 / 1
Регистрация: 13.08.2012
Сообщений: 779
19.02.2015, 17:31  [ТС]
сейчас проблема осталась такая, делаю сдвиг с лева для первого (0) элемента, но почему-то элементы не сдвигаются:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
RelativeLayout.LayoutParams TVParams = new RelativeLayout.LayoutParams(RLwrapContent, RLwrapContent );
        RelativeLayout.LayoutParams IVParams = new RelativeLayout.LayoutParams(250, 400);
        RelativeLayout.LayoutParams BParams = new RelativeLayout.LayoutParams(RLwrapContent, RLwrapContent);
        RelativeLayout.LayoutParams RLParams = new RelativeLayout.LayoutParams(RLFillParent, RLFillParent);
 
        TVParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
        TVParams.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
 
        IVParams.addRule(RelativeLayout.CENTER_VERTICAL, RelativeLayout.TRUE);
        IVParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
 
        BParams.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
        BParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
 
        if (folder.exists()) {
            String[] files = folder.list();
            relationsIdMarket = new ArrayList<RelationsIdMarket>(files.length);
            for (int i = 0; i < files.length; i++){
                RLParams.setMargins((i==0)? 100 : 0, 0, 0, 0);//тут ставлю для 0-го элемента отступ с лева на 100
                RelationsIdMarket rim = new RelationsIdMarket();
 
                rim.idProduct = i;
                rim.idTextView = ViewIdGenerator.generateViewId();
                rim.idImageView = ViewIdGenerator.generateViewId();
                rim.idButton = ViewIdGenerator.generateViewId();
 
                TextView tv = new TextView(this);
                tv.setText("Название");
 
                tv.setId(rim.idTextView);
 
                ImageView iv = new ImageView(this);
                iv.setImageBitmap(BitmapFactory.decodeFile(path+"/"+files[i]));
 
                iv.setId(rim.idImageView);
 
                Button btn = new Button(this);
                btn.setText("Открыть");
                btn.setOnClickListener(this);
 
                btn.setId(rim.idButton);
 
                RelativeLayout rl = new RelativeLayout(this);
 
                rl.addView(tv, TVParams);
                rl.addView(iv, IVParams);
                rl.addView(btn, BParams);
                rl.setPadding(50, 0, 50, 0);
 
                market_ll.addView(rl, RLParams);
 
                relationsIdMarket.add(rim);
            }
        }
в итоге изображение такое:
Миниатюры
Динамическое создание интерфейса  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.02.2015, 17:31
Помогаю со студенческими работами здесь

Динамическое создание элементов интерфейса
Хотелось бы создавать кнопочки и др. элементы в аплете динамически, читая информацию из файла-параметра. Реально ли это, позволяет ли...

Динамическое создание элементов интерфейса?
подскажите плз. и/или ткните носом где почитать про динамическое создание элементов интерфейса (фреймы-окна внутри приложения, чекбоксы,...

Динамическое создание элементов интерфейса
С Новым Годом, друзья. В общем, печалька у меня: создаю элементы, а в обработчиках события не знаю как их обработать. public void...

Динамическое создание элементов интерфейса
Только недавно начал изучать сишарп. Необходимо создать кнопку, которая создает лабел, при нажатии на который он должен исчезнуть написал...

Динамическое создание элементов интерфейса вынесено в отдельный класс. Доступ к Controls главной формы
Из Ответы на 7 самых частых вопроса по WinForms Пример динамического создания кнопки: System.Windows.Forms.Button button1 = new...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru