Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
NEvOl
19 / 18 / 0
Регистрация: 13.08.2012
Сообщений: 726
#1

Динамическое создание интерфейса - Программирование Android

18.02.2015, 14:20. Просмотров 953. Ответов 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 вылетает прога.
Миниатюры
Динамическое создание интерфейса  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2015, 14:20     Динамическое создание интерфейса
Посмотрите здесь:

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

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

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

Создание интерфейса - Программирование Android
Привет всем. Я совсем недавно решил заняться разработкой под android. С одной стороны очень легко далась java, с учетом того, что на...

Программное создание интерфейса - Программирование Android
Вобщем мне нужно создавать програмным способом интерфейс приложения. Обьекты будут создаватся динамически, поэтому через xml разметку не...

Создание элементов интерфейса в Java коде - Программирование Android
Здравствуйте! У меня есть класс PuzzleView, реализующий собственный View. В верхней части экрана рисуется квадрат, а под этим квадратом мне...

Создание интерфейса на основе макета Photoshop - Программирование Android
Я только начинаю программировать под андроид. Возникли некоторые сложности с версткой,а точнее - адаптацией под разные размеры экранов. ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NEvOl
19 / 18 / 0
Регистрация: 13.08.2012
Сообщений: 726
18.02.2015, 16:10  [ТС]     Динамическое создание интерфейса #2
Причина падения в том что нужно добавлять RelativeLayout а не LinearLayout . Но как сделать все красиво пока не понятно.

Добавлено через 1 час 34 минуты
Подскажите как задать программно такие свойства как:
layout_alignParentTop для TextView
layout_centerHorizontal для TextView
orientation - для RelativeLayout
?
FreakMurderer
-58 / 10 / 2
Регистрация: 21.11.2013
Сообщений: 87
18.02.2015, 18:35     Динамическое создание интерфейса #3
http://stackoverflow.com/questions/7...nterhorizontal
NEvOl
19 / 18 / 0
Регистрация: 13.08.2012
Сообщений: 726
18.02.2015, 19:27  [ТС]     Динамическое создание интерфейса #4
FreakMurderer, спасибо, а еще интересует очень вопрос о генерации id для view. Подскажите как это правильно делать ? Насколько я понял там должны быть только положительные числа. Но как именно сгенерировать уникальный id не понятно.
FreakMurderer
-58 / 10 / 2
Регистрация: 21.11.2013
Сообщений: 87
18.02.2015, 19:40     Динамическое создание интерфейса #5
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/7587/...conflicts.html
NEvOl
19 / 18 / 0
Регистрация: 13.08.2012
Сообщений: 726
19.02.2015, 16:01  [ТС]     Динамическое создание интерфейса #6
Цитата Сообщение от FreakMurderer Посмотреть сообщение
View.
что это такое ?
FreakMurderer
-58 / 10 / 2
Регистрация: 21.11.2013
Сообщений: 87
19.02.2015, 16:13     Динамическое создание интерфейса #7
Цитата Сообщение от NEvOl Посмотреть сообщение
что это такое ?
В каком смысле ?
View это - http://developer.android.com/referen...view/View.html
NEvOl
19 / 18 / 0
Регистрация: 13.08.2012
Сообщений: 726
19.02.2015, 17:27  [ТС]     Динамическое создание интерфейса #8
вроде разобрался)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2015, 17:31     Динамическое создание интерфейса
Еще ссылки по теме:

Динамическое создание кнопки - Программирование Android
Добрый день, подскажите пожалуйста как программно можно создать кнопку или картинку и отобразить их на экране?

Динамическое создание объекта - Программирование Android
Всем привет! Заранее извиняюсь за глупый вопрос. Подскажите, пожалуйста, кто знает, как можно динамически создать кнопку в Android? Я...

Динамическое создание View - Программирование Android
Есть шаблон: &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot; ...

Динамическое создание динамических обьектов - Программирование Android
Пишу игру. Есть уровни. В каждом уровне заданное количество обьектов-соперников. Есть класс Соперник, который содержит функции...

Динамическое создание элементов на активити - Программирование Android
Здравствуйте! Возникла проблема динамического создания элементов. К примеру, мне необходимо, чтобы при нажатии на одну кнопку, на...


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

Или воспользуйтесь поиском по форуму:
NEvOl
19 / 18 / 0
Регистрация: 13.08.2012
Сообщений: 726
19.02.2015, 17:31  [ТС]     Динамическое создание интерфейса #9
сейчас проблема осталась такая, делаю сдвиг с лева для первого (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);
            }
        }
в итоге изображение такое:
Миниатюры
Динамическое создание интерфейса  
Yandex
Объявления
19.02.2015, 17:31     Динамическое создание интерфейса
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru