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

Разметка элементов - Android

Войти
Регистрация
Восстановить пароль
 
Faltfromoss
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 31
04.04.2016, 20:27     Разметка элементов #1
На первый взгляд простейшая задача - нарисовать калькулятор в таком стиле:
Разметка элементов

И первое, что приходит на ум - использовать GridLayout для размещения кнопок. Этот макет позволяет объединять ячейки как по горизонтали, так и по вертикали, что требуется для кнопок "0" и "=".

После первого наброска для меня, как для новичка в этом деле, получился неожиданный результат. Три скрина для экранов 4,7, 6 и 7 дюймов соответственно:

Разметка элементов Разметка элементов Разметка элементов

Оказывается GridLayout подгоняет ширину ячеек под самый широкий элемент в строке. Хотя я вначале думал, что грид работает по-другому - подгоняет элементы под размер экрана (как LinearLayout). В итоге вся борьба с гридом сводится к тому, что нужно задавать фиксированные размеры кнопок, чтобы они поместились в экран. Но это, как я понимаю, не выход, так как под каждый размер экрана делать макет - это чушь.

Далее возникла мысль использовать TableLayout. С ним всё прекрасно получается, так как у этого контейнера есть нужный в данной ситуации атрибут shrinkColumns, который позволяет переносить текст, если тот не помещается в ширину колонки. В случае с кнопками, он их ужимает до нужного размера и они все прекрасно смотрятся на любом экране. Но, здесь опять я встретился с траблой. При чем для меня непонятной до сих пор. Ячейки в TableLayout можно объединять только по горизонтали! С чем связано это ограничение - ума не приложу... В итоге кнопку "=" вставить в таблицу как в задании - невозможно.

В итоге, я так пока и не пришел к разумному решению - как правильно сделать разметку кнопок, чтобы они корректно подстраивались под любой экран. Прошу вашей помощи. Заранее благодарен!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2016, 20:27     Разметка элементов
Посмотрите здесь:

Android ListFragment - своя разметка item
Android Разметка приложения
Разметка ListView не найдена Android
Android Разметка XML
Разметка activity Android
Android Разметка под Андроид
Разметка приложения, контейнеры компоновки Android
Html разметка Android
Android Разметка GridView
Разметка и вывод списком Android
Разметка Android
Разметка (фон аккаунта) Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OlegJV
 Аватар для OlegJV
99 / 99 / 29
Регистрация: 13.03.2016
Сообщений: 452
05.04.2016, 03:44     Разметка элементов #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
<LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
 
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1">
 
            <LinearLayout
                android:orientation="horizontal"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1">
 
                <Button
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:id="@+id/button1"
                    android:layout_weight="1" />
 
                <Button
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:id="@+id/button2"
                    android:layout_weight="1" />
 
                <Button
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:id="@+id/button3"
                    android:layout_weight="1" />
 
                <Button
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:id="@+id/button4"
                    android:layout_weight="1" />
 
            </LinearLayout>
 
            <LinearLayout
                android:orientation="horizontal"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1">
 
 
            </LinearLayout>
 
            <LinearLayout
                android:orientation="horizontal"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1">
 
 
            </LinearLayout>
 
            <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1">
 
 
        </LinearLayout>
 
            <LinearLayout
                android:orientation="horizontal"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1">
 
 
            </LinearLayout>
 
            <LinearLayout
                android:orientation="horizontal"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1">
 
                <Button
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:id="@+id/button21"
                    android:layout_weight="3" />
 
                <Button
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:id="@+id/button22"
                    android:layout_weight="4" />
 
                <Button
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:id="@+id/button23"
                    android:layout_weight="4" />
 
            </LinearLayout>
 
 
        </LinearLayout>
 
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="4">
 
 
            <Button
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/button5"
                android:layout_weight="6" />
 
            <Button
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/button10"
                android:layout_weight="6" />
 
            <Button
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/button15"
                android:layout_weight="6" />
 
            <Button
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/button20"
                android:layout_weight="6" />
 
            <Button
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/button25"
                android:layout_weight="5" />
 
 
        </LinearLayout>
 
    </LinearLayout>
OlegJV
 Аватар для OlegJV
99 / 99 / 29
Регистрация: 13.03.2016
Сообщений: 452
05.04.2016, 03:46     Разметка элементов #3
Лень все кнопки рисовать
Миниатюры
Разметка элементов  
Faltfromoss
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 31
05.04.2016, 21:56  [ТС]     Разметка элементов #4
Спасибо. Сам пытался составить макет с помощью LinearLayout, ничего не удавалось. На самом деле всё просто
Yandex
Объявления
05.04.2016, 21:56     Разметка элементов
Ответ Создать тему
Опции темы

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