С Новым годом! Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
20 / 19 / 1
Регистрация: 13.08.2012
Сообщений: 779

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

18.02.2015, 14:20. Показов 2358. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru