С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

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

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

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

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

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

Разметка - Программирование Android
Подскажите как сделать такую разметку на всех экранах? У меня основная сложность в том что я не могу синхронизировать размеры элементов....

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

Разметка GridView - Программирование Android
Как можно сделать разметку GridView, чтобы одна верхняя ячейка была по всей ширине экрана, а остальные - ниже шли обычно таблицей??Как так...

Разметка layout - Программирование Android
Хочу сделать вот такую разметку. Т.е. как-бы объединить ячейки, чтобы можно было в эту ячейку добавить компонент. Как это можно сделать?

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

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

3
OlegJV
103 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 472
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>
1
OlegJV
103 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 472
05.04.2016, 03:46 #3
Лень все кнопки рисовать
0
Миниатюры
Разметка элементов  
Faltfromoss
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 32
05.04.2016, 21:56  [ТС] #4
Спасибо. Сам пытался составить макет с помощью LinearLayout, ничего не удавалось. На самом деле всё просто
0
05.04.2016, 21:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2016, 21:56
Привет! Вот еще темы с ответами:

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

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

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

Разметка под Андроид - Программирование Android
Нужна помощь в верстке, пишите кто сможет помочь Дубль темы во Фрилансе, закрыто


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

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

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