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

Динамическое создание элементов со стилями - Android

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
EgorDybovik
0 / 0 / 0
Регистрация: 24.02.2013
Сообщений: 126
22.09.2014, 15:29     Динамическое создание элементов со стилями #1
Существует набор стилей :
XML
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
<style name="once_items_yr">
        <item name="android:background">#fff</item>
        <item name="android:paddingBottom">1dp</item>
        <item name="android:paddingTop">1dp</item>
        <item name="android:paddingLeft">1dp</item>
        <item name="android:paddingRight">1dp</item>
        <item name="android:layout_marginRight">5dp</item>
        <item name="android:layout_marginLeft">5dp</item>
        <item name="android:layout_marginTop">2dp</item>
        <item name="android:layout_marginBottom">2dp</item>
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">match_parent</item>
        <item name="android:orientation">horizontal</item>
        
    </style>
    <style name="namber_yrok">
        <item name="android:textSize">30dp</item>
        <item name="android:gravity">left</item>
        <item name="android:layout_gravity">center_vertical</item>
        <item name="android:textColor">#666</item>
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
    </style>
    <style name="klass_yrok">
        <item name="android:layout_marginLeft">5dp</item>
        <item name="android:textSize">35dp</item>
        <item name="android:layout_gravity">center_vertical</item>
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
    </style>
    <style name="layout_klass_cont">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:layout_gravity">right</item>
        <item name="android:gravity">right</item>
        <item name="android:orientation">horizontal</item>
    </style>
    <style name="time_yrok">
        <item name="android:layout_gravity">center_vertical</item>
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:layout_marginLeft">10dp</item>
        <item name="android:textSize">20dp</item>
        <item name="android:textColor">#014a96</item>
    </style>
пытаюсь создать динамически элементы с такими стилями но ничего не получается, как это делается ? особенно с Layout-ами. Гдето накапал вот такое с простыми View :
Java
1
2
3
4
5
6
7
8
TextView text1 = new TextView(this,null,R.style.time_yrok);
TextView text2 = new TextView(this,null,R.style.time_yrok);
TextView text3 = new TextView(this,null,R.style.time_yrok);
TextView text4 = new TextView(this,null,R.style.time_yrok);
text1.setText("00:00");
text2.setText("до");
text3.setText("00:00");
text4.setText("с");
Сами элементы создаются но без стилей которые указаны в style.xml.. что не так ?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
petruchodd
 Аватар для petruchodd
89 / 89 / 8
Регистрация: 23.06.2009
Сообщений: 505
24.09.2014, 03:53     Динамическое создание элементов со стилями #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Попробуй чето типа
Java
1
 text1.setTextAppearance(this, R.style.time_yrok);

Не по теме:

p.s. хм.. завтра тоже попробую.. но довольно таки интересный вопрос.. Если таким образом простым можна задавать всякие параметры которые вводятся в **layout.xml,то это даже очень интересно :/ я очень не люблю мучатся с xml layouts поэтому создаю всё в ручную.
плюсы : нету :/ просто мне так удобно и на ходу можна добавить то, что нужно , а не парить мозги с инфлейтами или тому подобному коду .
минусы : не все параметры можна ввести програмно (

EgorDybovik
0 / 0 / 0
Регистрация: 24.02.2013
Сообщений: 126
24.09.2014, 12:19  [ТС]     Динамическое создание элементов со стилями #3
Получилось так, но на половину)) какие то стили применились а какие то нет.. например цвет текста и его размер применился, а margin нет((

А мне так проще делать, сначала создать один стиль а потом его подстовлять под необходимый елемент, я просто вообще занимаюсь web программированием а там только так )
petruchodd
 Аватар для petruchodd
89 / 89 / 8
Регистрация: 23.06.2009
Сообщений: 505
24.09.2014, 13:02     Динамическое создание элементов со стилями #4
Цитата Сообщение от EgorDybovik Посмотреть сообщение
апример цвет текста и его размер применился, а margin нет((
вот за margins я не знаю(( но видимо я ошибся.. таким образом нельзя заменить данные с xml..

Margins можна задать через параметры.. но это лишний код :/ значит нужно искать путь которым можна полностью присобачить margins
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
24.09.2014, 13:14     Динамическое создание элементов со стилями #5
А зачем оно вообще? Не проще создать отдельный layout, инфлейтить его и подставлять нужный текст?
Java
1
2
TextView textView  = (TextView) View.inflate(this, R.text_view_layout, null);
textView.setText("text");
Можно для удобства, если много таких вьюшек, сделать метод принимающий String и возвращающий TextView
Java
1
2
3
4
5
6
7
public TextView getCustomTextView(String text){
 
TextView textView  = (TextView) View.inflate(this, R.text_view_layout, null);
textView.setText(text);
return textView;
 
}
И получать из него вьюшку
Java
1
2
TextView tv1 = getCustomTextView("text1");
TextView tv2 = getCustomTextView("text2");
EgorDybovik
0 / 0 / 0
Регистрация: 24.02.2013
Сообщений: 126
24.09.2014, 13:53  [ТС]     Динамическое создание элементов со стилями #6
а что такое inflate и чем оно лучше ?, суть вся в том что я динамически в цыкле создаю 6 layout вот такой струкутры
XML
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
<LinearLayout
                    style="@style/once_items_yr">
                    <TextView
                        android:id="@+id/textView1"
                        style="@style/namber_yrok"
                        android:text="1" />
 
                    <Spinner
                        android:id="@+id/spinner1"
                        android:layout_width="95dp"
                        android:layout_height="wrap_content" />
 
                    <LinearLayout
                        style="@style/time_yrok_red"
                        android:onClick="viewDialog_time">
 
                        <TextView
                            style="@style/time_yrok"
                            android:text="c" />
                        <TextView
                            style="@style/time_yrok"
                            android:id="@+id/hour_and_minut"
                            android:text="8:00" />
                        <TextView
                            style="@style/time_yrok"
                            android:text="до" />
                        <TextView
                            style="@style/time_yrok"
                            android:id="@+id/hour_and_minut_end"
                            android:text="8:45" />
 
                    </LinearLayout>
                    
                </LinearLayout>
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2014, 14:09     Динамическое создание элементов со стилями
Еще ссылки по теме:

Динамическое создание элементов интерфейса Android
Динамическое создание интерфейса Android
Динамическое создание drawable-ресурса Android
Android Динамическое создание элементов на активити
Android Динамическое создание таблиц SQLite

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

Или воспользуйтесь поиском по форуму:
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
24.09.2014, 14:09     Динамическое создание элементов со стилями #7
Цитата Сообщение от EgorDybovik Посмотреть сообщение
а что такое inflate
Получение View из xml файла-разметки.
Цитата Сообщение от EgorDybovik Посмотреть сообщение
суть вся в том что я динамически в цыкле создаю 6 layout вот такой структуры
Пожалуйста, любой структуры можно, вот на вашу код
Java
1
2
3
4
5
6
7
8
9
10
11
public TextView getCustomView(String startText, String endText){
 
LinearLayout view  = (LinearLayout) View.inflate(this, R.view_layout, null);
TextView hourAndMinut = (TextView) view.findViewById(R.id.hour_and_minut);
TextView hourAndMinutEnd = (TextView) view.findViewById(R.id.hour_and_minut_end);
hourAndMinut.setText(startText);
hourAndMinutEnd.setText(endText);
 
return view;
 
}
И создание в цикле
Java
1
2
3
4
5
6
7
ArrayList<View> views = new ArrayList<View>;
for(int i = 0; i < 6; i++){
 
View view = getCustomView(i + ":00", i + ":30");
views.add(view);
 
}
В результате получите ArrayList с 6 полными вьюшками т.е. все что у вас в xml нарисовано. С нужным текстом на каждой, здесь будет у первой: нач. время 0:00 кон. время 0:30, у второй 1:00 и 1:30, соответственно и так далее до 5:00 и 5:30.
Yandex
Объявления
24.09.2014, 14:09     Динамическое создание элементов со стилями
Ответ Создать тему
Опции темы

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