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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 1, средняя оценка - 5.00
Prostoplus
11 / 1 / 0
Регистрация: 21.09.2012
Сообщений: 122
#1

Программное заполнение и верстка TableLayout - Программирование Android

01.05.2015, 22:25. Просмотров 1218. Ответов 13
Метки нет (Все метки)

Здравствуйте. Не удается программно задать параметры, аналогичные XML - файлу.
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fab="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:tag="BooksFragment"
    android:layout_height="match_parent">
 
    <TableLayout
        android:id="@+id/BooksTableTitle"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
 
        <TableRow
            android:background="#cccccc"
 
            android:paddingLeft="0dp"
            android:paddingTop="5dp"
            android:paddingRight="0dp"
            android:paddingBottom="5dp"
            android:layout_height="match_parent">
 
            <ImageView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:src="@drawable/bookii"
 
                android:layout_gravity="start"
                android:paddingLeft="0dp"
                android:paddingTop="0dp"
 
                android:paddingRight="5dp"
                android:paddingBottom="0dp"
                android:layout_weight="0.3"
                android:id="@+id/booksTitleImage" />
 
            <LinearLayout
                android:orientation="vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="0dp"
                android:layout_weight="4">
 
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_gravity="left|center_vertical"
                    android:layout_margin="1dip"
                    android:text="Название"
                    android:textAppearance="?android:attr/textAppearanceSmall"
                    android:textStyle="bold"
                    android:gravity="left"
                    android:layout_weight="2"
                    android:textColor="@color/text_color" />
 
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_margin="1dip"
                    android:layout_weight="2"
                    android:text="Издательство"
                    android:textAppearance="?android:attr/textAppearanceSmall"
                    android:textColor="@color/text_color"
                    android:textStyle="italic" />
 
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_margin="1dip"
                    android:layout_weight="2"
                    android:gravity="left|center"
                    android:text="Автор"
                    android:textAppearance="?android:attr/textAppearanceSmall"
                    android:textStyle="italic"
                    android:textColor="@color/text_color" />
            </LinearLayout>
 
            <ImageView
                android:id="@+id/imageView"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:layout_margin="1dip"
                android:layout_weight="1.5"
                android:src="@android:drawable/ic_menu_edit" />
 
            <ImageView
                android:id="@+id/imageView2"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:layout_margin="1dip"
                android:layout_weight="1.5"
                android:src="@android:drawable/ic_menu_delete" />
 
        </TableRow>
 
        <ScrollView
            android:id="@+id/BooksObservableScrollView"
            android:layout_width="match_parent"
            android:layout_height="fill_parent">
 
            <TableLayout
                android:id="@+id/PublishersTableLayout"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:background="#000">
            </TableLayout>
        </ScrollView>
    </TableLayout>
</FrameLayout>
Программно задаю следующим образом:
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
TableLayout tableLayout = (TableLayout) v.findViewById(R.id.PublishersTableLayout);
TableRow tableRow = new TableRow(v.getContext());
ImageView bookImage = new ImageView(v.getContext());
Bitmap bitmap = currentBook.getBitmapImage();
bookImage.setImageBitmap(bitmap);
bookImage.setBackgroundColor(Color.BLUE);
TableRow.LayoutParams bookImgLP = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.MATCH_PARENT,0.3f);
bookImgLP.gravity = Gravity.START;
bookImage.setLayoutParams(bookImgLP);
bookImage.setPadding(0,0,5,0);
//-------------------------------------------------------------------------------------
LinearLayout linearLayout = new LinearLayout(v.getContext());
linearLayout.setBackgroundColor(Color.WHITE);
linearLayout.setOrientation(LinearLayout.VERTICAL);
TableRow.LayoutParams linearLayoutParams = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT,4f);
linearLayout.setLayoutParams(linearLayoutParams);
//-------------
  TextView bookTitle      = new TextView(v.getContext());
  TextView bookAuthor     = new TextView(v.getContext());
  TextView bookPublisher  = new TextView(v.getContext());
 
   bookTitle.setText(currentBook.getTitle());
   bookAuthor.setText(currentBook.getAuthor().getName());
   bookPublisher.setText(currentBook.getPublisher().getName());
 
   bookTitle.setTextColor(Color.BLACK);
   bookAuthor.setTextColor(Color.BLACK);
   bookPublisher.setTextColor(Color.BLACK);
 
   bookTitle.setPadding(5,5,5,0);
   bookAuthor.setPadding(5,0,5,0);
   bookPublisher.setPadding(5,0,5,5);
 
    TableRow.LayoutParams lpText = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.MATCH_PARENT, 2f);
   lpText.setMargins(1,1,1,1);
   bookTitle.setLayoutParams(lpText);
   bookAuthor.setLayoutParams(lpText);
   bookPublisher.setLayoutParams(lpText);
 
   bookTitle.setBackgroundColor(Color.WHITE);
   bookAuthor.setBackgroundColor(Color.WHITE);
   bookPublisher.setBackgroundColor(Color.WHITE);
 
   bookTitle.setTypeface(null, Typeface.BOLD);
   bookAuthor.setTypeface(null, Typeface.ITALIC);
   bookAuthor.setTypeface(null, Typeface.ITALIC);
 
   linearLayout.addView(bookTitle);
   linearLayout.addView(bookAuthor);
   linearLayout.addView(bookPublisher);
//-------------------------------------------------------------------------------------
            ImageButton editButton = new ImageButton(v.getContext());
            ImageButton delButton = new ImageButton(v.getContext());
 
            editButton.setImageResource(android.R.drawable.ic_menu_edit);
            delButton.setImageResource(android.R.drawable.ic_delete);
 
            TableRow.LayoutParams lpBtn = new TableRow.LayoutParams(0,
                                            TableRow.LayoutParams.MATCH_PARENT, 1.5f);
            editButton.setLayoutParams(lpBtn);
            delButton.setLayoutParams(lpBtn);
 
            editButton.setBackgroundColor(Color.WHITE);
            delButton.setBackgroundColor(Color.WHITE);
 
            tableRow.addView(bookImage);
            tableRow.addView(linearLayout);
            tableRow.addView(editButton);
            tableRow.addView(delButton);
            tableLayout.addView(tableRow);
Вопрос: Почему на скрине видно синее поле? Откуда появляются у ImageView такие отступы справа и слева, если параметры задаю аналогичные XML - файлу.
0
Миниатюры
Программное заполнение и верстка TableLayout  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2015, 22:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программное заполнение и верстка TableLayout (Программирование Android):

Программное заполнение Navigation Drawer - Программирование Android
Задача - вывести в Navigation Drawer стандартного шаблона список доступных датчиков устройства. Каким образом программно можно добавлять...

TableLayout - Программирование Android
Считываю данные из БД, и размещаю их в таблице на основе TableLayout. Для того чтоб она листалась, так как строк довольно много,...

TableLayout - Программирование Android
Как убрать отступы между ячейками?Например сетка заполнена кнопками,мне нужно уменьшить расстояние между кнопками.:(

TableLayout - Программирование Android
Как мне растянуть EditText, чтобы его левый край был возле правого края TextView? Разметка &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; ...

TableLayout - Программирование Android
Нашла на сайте как делать сеточку с помощью TableLayout. И вроде всё сделала, как сказано... Но почему-то отображает только первую строку...

TableLayout - Программирование Android
Как сделать так что б TextView в TableLayout была на всю строку? :scratch:

13
Prostoplus
11 / 1 / 0
Регистрация: 21.09.2012
Сообщений: 122
01.05.2015, 22:33  [ТС] #2
IDE - Android Studio.
Необходимо создать строки в таблице, аналогичные по оформлению шапке таблицы из XML - файлу.
0
Pablito
2499 / 1983 / 618
Регистрация: 12.05.2014
Сообщений: 6,925
Завершенные тесты: 1
01.05.2015, 22:38 #3
в xml отступы везде в dp и dip
а в коде в пикселях
0
Prostoplus
11 / 1 / 0
Регистрация: 21.09.2012
Сообщений: 122
01.05.2015, 22:46  [ТС] #4
Паблито, нет, проблема не в этом - проверял.
0
Pablito
2499 / 1983 / 618
Регистрация: 12.05.2014
Сообщений: 6,925
Завершенные тесты: 1
01.05.2015, 22:59 #5
Цитата Сообщение от Prostoplus Посмотреть сообщение
проблема не в этом
я бы сказал не так - проблема не только в этом
в xml не всматривался, но не нашел там синий цвет (может конечно я и недоглядел), который в коде есть, ну и так далее
0
Prostoplus
11 / 1 / 0
Регистрация: 21.09.2012
Сообщений: 122
01.05.2015, 23:10  [ТС] #6
Паблито, пробовал использовать функцию DpToPx в Java - коде -безрезультатно.
Синий цвет я добавил в программном коде чисто для тестирования и выявления ошибки. Просто так виднее какой именно компонент ведет семя не так, как надо.

Добавлено через 7 минут
Нашел проблему: если поставить в строках ту же картинку, что и в шапке таблицы - все идеально. Почему так?
0
Pablito
01.05.2015, 23:12
  #7

Не по теме:

без понятия, я не вникал вообще
считаю что не очень разумно создавать програмно то, что можно делать в xml

0
Prostoplus
11 / 1 / 0
Регистрация: 21.09.2012
Сообщений: 122
01.05.2015, 23:12  [ТС] #8
Паблито, строки таблицы считываются с БД.
Я пропустил этот код.
0
Pablito
2499 / 1983 / 618
Регистрация: 12.05.2014
Сообщений: 6,925
Завершенные тесты: 1
01.05.2015, 23:15 #9
жесть
а почему не сделать это все с помощью ListView ?
0
Prostoplus
11 / 1 / 0
Регистрация: 21.09.2012
Сообщений: 122
01.05.2015, 23:19  [ТС] #10
Паблито, таблицу с помощью ЛистВью? Даже не знаю как лучше и проще

Добавлено через 2 минуты
Паблито, В лист вью можно создать такую же структуру?
0
Pablito
2499 / 1983 / 618
Регистрация: 12.05.2014
Сообщений: 6,925
Завершенные тесты: 1
01.05.2015, 23:23 #11
конечно, я не уверен что можно давать линки на другие сайты, поэтому загугли по словам listview custom adapter
на первой же странице будут даже русскоязычные уроки по созданию своего адаптера, сначала покажется что все сложно, но это только первое впечатление - все просто и намного удобнее будет чем создавать вот так в коде
1
Prostoplus
11 / 1 / 0
Регистрация: 21.09.2012
Сообщений: 122
01.05.2015, 23:31  [ТС] #12
Паблито, Спасибо, почитал. Там считай то же самое, что у меня сейчас, только метод создания View вынесен в класс с данными. Пожалуй, так и сделаю.
Вот только проблема остаётся: как сделать что бы независимо от изображения, строка в таблице отоьражалась правильно.
0
Pablito
2499 / 1983 / 618
Регистрация: 12.05.2014
Сообщений: 6,925
Завершенные тесты: 1
01.05.2015, 23:40 #13
Цитата Сообщение от Prostoplus Посмотреть сообщение
только метод создания View вынесен в класс с данными
каждая строка в списке это View которое делается на основе разметки
вот в процессе верстки и будет возможность проверить как ведет себя разметка при разных картинках

то есть надо просто подготовить шаблон, как будет выглядеть каждый итем списка и все
я первый раз тоже делал список в коде, только с помощью GridLayout, а потом напрягся и разобрался с ListView
1
Prostoplus
11 / 1 / 0
Регистрация: 21.09.2012
Сообщений: 122
01.05.2015, 23:52  [ТС] #14
Паблито,

Не по теме:

Вы случайно не знаете как в Android Studio можно посмотреть диаграмму иерархии классов?

0
01.05.2015, 23:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2015, 23:52
Привет! Вот еще темы с ответами:

TableLayout - Программирование Android
Проблема в расстановки компонетов в TableLayout есть код: &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;TableLayout...

Не работает TableLayout - Программирование Android
Вобщем, при попытке запустить выдаёт ошибку. В xml у меня получилось сделать в 1 ряд 2 кнопки, а тут нет... Пожалуйста, помогите ...

TableLayout по центру - Программирование Android
Есть на активити imageView и TableLayout. imageView в самом верху. Как разместить TableLayout по центу оставшегося пространства?

Не растягивается Spinner в TableLayout - Программирование Android
Доброго времени суток. Понадобился выпадающий список на экране. Компоненты которого размещены в TableLayout в двух условных столбцах. ...


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

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

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