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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 66, средняя оценка - 4.89
Sanu0074
58 / 58 / 2
Регистрация: 14.06.2010
Сообщений: 1,189
Записей в блоге: 5
#1

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

17.07.2013, 13:32. Просмотров 8663. Ответов 12
Метки нет (Все метки)

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

Например, в цикле вызывается метод, который создает TextView, в него вставляет текст:
Java
1
2
3
4
5
LinearLayout layout = (LinearLayout) findViewById(R.id.L1);
         
         TextView txt = new TextView(this); 
         txt.setText(text); 
         layout.addView(txt);
А например, мне нужно задать крупный шрифт этому TextView, покрасить его, потом динамически создать LinearLayout задав ему отступы и толщину\цвета границ и в этот LinearLayout вставить уже созданный и отформатированный TextView, а потом уже все это поместить в главный layout.

Можете показать как это делать на моем примере, либо есть ли статьи где описаны такие действия с примерами (желат. на русском)
Очень благодарен за внимание
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2013, 13:32     Динамическое создание элементов интерфейса
Посмотрите здесь:

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

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

Динамическое создание интерфейса - Программирование Android
Здравствуйте уважаемые. Помогите справиться с задачей. Хочу динамически создать несколько LinearLayout c TextView, ImageView и Button...

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

Динамическое создание элементов со стилями - Программирование Android
Существует набор стилей : <style name="once_items_yr"> <item name="android:background">#fff</item> <item...

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

Динамическое создание элементов на другом activity - Программирование Android
В чем суть: Нажимаем кнопку в лэйауте1, после чего создается ImageButton на лэйауте2 и лэйаут2 открывается с созданной на нем кнопкой. В...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Wenceslaus
Android Developer
130 / 130 / 4
Регистрация: 05.07.2013
Сообщений: 205
17.07.2013, 13:58     Динамическое создание элементов интерфейса #2
На самом деле здесь всё просто: для установки в TextView цветов/размеров есть методы
Java
1
2
3
TextView.setTextColor(color);
TextView.setBackgroundColor(color);
TextView.setTextSize(size);
для отступов используются LayoutParams, в которых это всё и настраивается с помощью параметров

Java
1
2
LinearLayout.setPadding(left, top, right, bottom);
LinearLayout.LayoutParams.setMargins(left, top, right, bottom);
Полнее, чем описано в документации сложно где найти..
Sanu0074
58 / 58 / 2
Регистрация: 14.06.2010
Сообщений: 1,189
Записей в блоге: 5
17.07.2013, 14:01  [ТС]     Динамическое создание элементов интерфейса #3
Цитата Сообщение от Wenceslaus Посмотреть сообщение
На самом деле здесь всё просто
А например, как теперь в этот LinearLayout вставить TextView, а потом все это вставить в основной LinearLayout либо ScrollView??
Wenceslaus
Android Developer
130 / 130 / 4
Регистрация: 05.07.2013
Сообщений: 205
17.07.2013, 14:15     Динамическое создание элементов интерфейса #4
ScrollView должен содержать один и только один элемент (например LinearLayout), в него и вставляйте.
Так разве не работает?
Java
1
2
3
4
TextView text = new TextView(this);
LinearLayout lLayout = new LinearLayout(this);
lLayout.addView(text);
parentLinearLayout.addView(lLayout);
Sanu0074
58 / 58 / 2
Регистрация: 14.06.2010
Сообщений: 1,189
Записей в блоге: 5
17.07.2013, 14:27  [ТС]     Динамическое создание элементов интерфейса #5
Цитата Сообщение от Wenceslaus Посмотреть сообщение
Так разве не работает?
Блин сделал так, но криво получилось:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
         LinearLayout layout = (LinearLayout) findViewById(R.id.lin1);
         
         TextView txt = new TextView(this); 
         txt.setText(name); 
         LinearLayout  newLayout = new LinearLayout(this);
         newLayout.addView(txt,0);
         
         
         ImageView image = new ImageView(this);
         LinearLayout imageLayout = new LinearLayout(this);
         imageLayout.addView(image);
         
         newLayout.addView(imageLayout,1);
         layout.addView(newLayout);
Нужно что бы все ровно было и текст был перед картинкой а не после
Wenceslaus
Android Developer
130 / 130 / 4
Регистрация: 05.07.2013
Сообщений: 205
17.07.2013, 14:53     Динамическое создание элементов интерфейса #6
Для ровности используйте настройки LayoutParams (height = width = LayoutParams.MATCH_PARENT и параметр weight) для каждого виджета, а также Gravity (вероятно Gravity.CENTER).
Но вот почему текст после картинки мне не понятно, с индексами месторасположения всё правильно..
Sanu0074
58 / 58 / 2
Регистрация: 14.06.2010
Сообщений: 1,189
Записей в блоге: 5
17.07.2013, 14:56  [ТС]     Динамическое создание элементов интерфейса #7
Цитата Сообщение от Wenceslaus Посмотреть сообщение
Для ровности используйте настройки LayoutParams (height = width = LayoutParams.MATCH_PARENT и параметр weight) для каждого виджета, а также Gravity (вероятно Gravity.CENTER).
Но вот почему текст после картинки мне не понятно, с индексами месторасположения всё правильно..
Вот сейчас так переделал:
Java
1
2
3
4
5
6
7
8
9
10
11
12
         LinearLayout layout = (LinearLayout) findViewById(R.id.mainLinear);
         
         LinearLayout imageLayout = new LinearLayout(this);
         
         TextView txt = new TextView(this); 
         txt.setText(name); 
         
         ImageView image = new ImageView(this);
         imageLayout.addView(image);
         
         layout.addView(txt);
         layout.addView(imageLayout);
убрал индексы у addView(), т.к. картинки снизу начинают грузиться - это плохо..
Но, как мне тут сейчас сделать чтоы сначала текст а потом картинка шло, такой вот сам XML:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scroll" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent">
 
   <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:id="@+id/mainLinear">
 
 
        
   </LinearLayout>
 
</ScrollView>
Wenceslaus
Android Developer
130 / 130 / 4
Регистрация: 05.07.2013
Сообщений: 205
17.07.2013, 17:03     Динамическое создание элементов интерфейса #8
Цитата Сообщение от Sanu0074 Посмотреть сообщение
сначала текст а потом картинка шло
Скопировал код к себе, запустил: первая строка - текст, вторая - картинка. Всё как положено. Покажите скрин приложения, ибо не понятно, как вы определяете, что картинка выше текста (image пустой в данном случае).
Sanu0074
58 / 58 / 2
Регистрация: 14.06.2010
Сообщений: 1,189
Записей в блоге: 5
17.07.2013, 17:07  [ТС]     Динамическое создание элементов интерфейса #9
Цитата Сообщение от Wenceslaus Посмотреть сообщение
Покажите скрин приложения, ибо не понятно, как вы определяете, что картинка выше текста (image пустой в данном случае).
Вот приложение, скопируйте себе и потеcтите, поймете тогда, файл прилепил
Вложения
Тип файла: rar test.rar (2.85 Мб, 54 просмотров)
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
17.07.2013, 21:43     Динамическое создание элементов интерфейса #10
используйте LayoutInflater
Wenceslaus
Android Developer
130 / 130 / 4
Регистрация: 05.07.2013
Сообщений: 205
17.07.2013, 22:23     Динамическое создание элементов интерфейса #11
Замените
Java
1
publishProgress(imageLnk, name);
на
Java
1
2
3
4
tagName = "";
if ("item".equals(xmlData.getName())) {
        publishProgress(imageLnk, name);
}
Иначе выходит, что добавляете пустые виджеты на layout'е, которые мешают корректному отображению.
goniometr
1 / 1 / 0
Регистрация: 28.05.2014
Сообщений: 50
10.06.2014, 23:38     Динамическое создание элементов интерфейса #12
Sanu0074, у тебя получилось динамически создавать элементы? можешь кинуть готовый вариант программулины своей где это реализовал.. или может в инете ещё где находил подробное описание подобного процесса то сейчас таже проблема а разобраться самостоятельно не получатся... Заранее спасибо за ответ.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2014, 00:21     Динамическое создание элементов интерфейса
Еще ссылки по теме:

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

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

Создание интерфейса на основе макета Photoshop - Программирование 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; ...


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

Или воспользуйтесь поиском по форуму:
Sanu0074
58 / 58 / 2
Регистрация: 14.06.2010
Сообщений: 1,189
Записей в блоге: 5
11.06.2014, 00:21  [ТС]     Динамическое создание элементов интерфейса #13
goniometr, используй layotinflater для сложных видов, или же простыми способами - TextView tw = new TextView()
Yandex
Объявления
11.06.2014, 00:21     Динамическое создание элементов интерфейса
Ответ Создать тему
Опции темы

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