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

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

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

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

01.05.2015, 22:25. Просмотров 1132. Ответов 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 - файлу.
Миниатюры
Программное заполнение и верстка TableLayout  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2015, 22:25     Программное заполнение и верстка TableLayout
Посмотрите здесь:
Программное заполнение Navigation Drawer Android
TableLayout Android
TableLayout Android
Android TableLayout
Android TableLayout
Android TableLayout
Android TableLayout
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Prostoplus
11 / 1 / 0
Регистрация: 21.09.2012
Сообщений: 122
01.05.2015, 22:33  [ТС]     Программное заполнение и верстка TableLayout #2
IDE - Android Studio.
Необходимо создать строки в таблице, аналогичные по оформлению шапке таблицы из XML - файлу.
Pablito
2455 / 1900 / 591
Регистрация: 12.05.2014
Сообщений: 6,702
Завершенные тесты: 1
01.05.2015, 22:38     Программное заполнение и верстка TableLayout #3
в xml отступы везде в dp и dip
а в коде в пикселях
Prostoplus
11 / 1 / 0
Регистрация: 21.09.2012
Сообщений: 122
01.05.2015, 22:46  [ТС]     Программное заполнение и верстка TableLayout #4
Паблито, нет, проблема не в этом - проверял.
Pablito
2455 / 1900 / 591
Регистрация: 12.05.2014
Сообщений: 6,702
Завершенные тесты: 1
01.05.2015, 22:59     Программное заполнение и верстка TableLayout #5
Цитата Сообщение от Prostoplus Посмотреть сообщение
проблема не в этом
я бы сказал не так - проблема не только в этом
в xml не всматривался, но не нашел там синий цвет (может конечно я и недоглядел), который в коде есть, ну и так далее
Prostoplus
11 / 1 / 0
Регистрация: 21.09.2012
Сообщений: 122
01.05.2015, 23:10  [ТС]     Программное заполнение и верстка TableLayout #6
Паблито, пробовал использовать функцию DpToPx в Java - коде -безрезультатно.
Синий цвет я добавил в программном коде чисто для тестирования и выявления ошибки. Просто так виднее какой именно компонент ведет семя не так, как надо.

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

Не по теме:

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

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

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

то есть надо просто подготовить шаблон, как будет выглядеть каждый итем списка и все
я первый раз тоже делал список в коде, только с помощью GridLayout, а потом напрягся и разобрался с ListView
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2015, 23:52     Программное заполнение и верстка TableLayout
Еще ссылки по теме:
Не работает TableLayout Android
TableLayout по центру Android
Android Не растягивается Spinner в TableLayout
Связка ScrollView + Include + TableLayout Android
Не обновляется содержимое TableLayout в Fragment Android

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

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

Не по теме:

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

Yandex
Объявления
01.05.2015, 23:52     Программное заполнение и верстка TableLayout
Ответ Создать тему
Опции темы

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