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

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

Войти
Регистрация
Восстановить пароль
 
Faltfromoss
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 32
#1

Разметка элементов - Программирование Android

04.04.2016, 20:27. Просмотров 223. Ответов 3
Метки нет (Все метки)

На первый взгляд простейшая задача - нарисовать калькулятор в таком стиле:
Разметка элементов

И первое, что приходит на ум - использовать 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
Подскажите как сделать такую разметку на всех экранах? У меня основная сложность в том что я не могу синхронизировать размеры элементов....

Html разметка - Программирование Android
Можно ли при помощи Java как то создать html файл и заполнить его содержимое определенной html разметкой, которую затем можно запустить...

Разметка приложения - Программирование Android
На вложенном скриншоте разметка моего приложения. Нужно чтобы шесть кнопок были размером во весь экран на любом устройстве. Как правильно...

Разметка XML - Программирование Android
Здравствуйте, сделал разметку, но она не эффективна на разных разрешениях экранов, т.к. я задавал ширину и высоту и расположение явно....

Разметка activity - Программирование Android
Здравствуйте. У меня в активити присутствует webView, за ним - listView и внизу кнопки для навигации. Т.к. webView используется не всегда я...

Разметка ListView не найдена - Программирование Android
Пытаюсь подключить свой адаптер и свою разметку. Делаю так: import android.os.Bundle; import android.support.v4.app.ListFragment; ...

Разметка и вывод списком - Программирование Android
Вот пытаюсь вывести на экран списком подобие расписания, но вот сама разметка подводит. Для вывода использую RecyclerView, и когда на...

Разметка (фон аккаунта) - Программирование Android
Как сделать черный прямоугольник на фона аккаунта как на скрине со "Стивом Джобсом")?

Разметка для RadioGroup - Программирование Android
Делаю карточку вопрос-варианты ответа. Выглядит сейчас она так, как на прикреплённом скриншоте, без редактирования, как есть. Разметка...

ListFragment - своя разметка item - Программирование Android
А как свою разметку каждого item подсунуть в ListFragment? Вот как есть сейчас и работает: @Override public void...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OlegJV
102 / 102 / 29
Регистрация: 13.03.2016
Сообщений: 471
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
102 / 102 / 29
Регистрация: 13.03.2016
Сообщений: 471
05.04.2016, 03:46     Разметка элементов #3
Лень все кнопки рисовать
Миниатюры
Разметка элементов  
Faltfromoss
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 32
05.04.2016, 21:56  [ТС]     Разметка элементов #4
Спасибо. Сам пытался составить макет с помощью LinearLayout, ничего не удавалось. На самом деле всё просто
Yandex
Объявления
05.04.2016, 21:56     Разметка элементов
Ответ Создать тему
Опции темы

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