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

Разместить 16 квадратов одним большим - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Icon в Drawable возможно? http://www.cyberforum.ru/android-dev/thread1631000.html
Возможно ли перевести Icon в Drawable? Есть пакет FontAwesome.Icon, могу ли я использовать его например для android:drawableRight=""? как?
Программирование Android Уведомления в заданное время без Alarm Пытаюсь вывести уведомление в заданное время не используя AlarmManager. Т.к. через AlarmManager, после перезагрузки, выводятся все уведомления по очереди, время и дата которых уже прошли, и остаётся... http://www.cyberforum.ru/android-dev/thread1630992.html
RelativeLayout и Bitmap Программирование Android
Можно ли поставить на задний фон RelativeLayout Bitmap. Или преобразовать Bitmap в Drawable? P.S. Именно Bitmap, а не BitmapDrawable/
Как сохранить все Exception Программирование Android
Привет. Наверное все знают о NullPointerException и о том что код идеальным не бывает. Есть ли какие логгеры чтобы хотябы сохранить ошибки и по желанию пользователя отправить их разработчику для...
Программирование Android Kак прошить ПО на Wiko Sunset? http://www.cyberforum.ru/android-dev/thread1630910.html
Здравствуйте. Сможет мне кто нибудь помочь пожалуйста... Проблема вот в чем. У меня смартфон Wiko Sunset. Недавно появилас такая запись " В приложении "com. android.systemui" произошла ошибка"...
Программирование Android Задержка потока с помощью sleep() Так... собственно код while (y>0) { y--; WorkArray = 1; try {Show(); Thread.sleep(wait);} ... подробнее

Показать сообщение отдельно
Pablito
2496 / 1980 / 618
Регистрация: 12.05.2014
Сообщений: 6,924
Завершенные тесты: 1
06.01.2016, 19:54
Так как вопрос про квадратные лаяуты поднимается не первый раз, я немного поднапрягся и сделал.
Только xml, никакого кода.

Кое какие строки добавлены для наглядности и я немного попытался отрефакторить xml (стили).
Так как непонятно из чего должны состоять те 16 квадратов, я решил сделать их кнопками. В разметке будет показан отдельно сам квадратный лаяут и в него includ-ом включен лаяут с кнопками (сильно не рефакторил).

Что бы понять ход моей мысли, попытайтесь не читать по диагонали, а делать по пунктам
Итак:

1. в файл build.gradle подключаем PercentFrameLayout
XML
1
compile 'com.android.support:percent:23.1.1'
2. Приготовим стиль для наших кнопок. В файл values/styles.xml добавляем
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
    <style name="MyAwesomeButton" parent="@style/Widget.AppCompat.Button.Borderless">
        <item name="android:layout_weight">1</item>
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">match_parent</item>
        <item name="android:background">#FFF</item>
        <item name="android:layout_margin">1dp</item>
    </style>

Цвет фона и margin добавил для наглядности, их можно убрать потом.

3. Теперь важно, внимательно! В папке res/values создаем файл square_layout_style.xml и копируем туда эти строки
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="utf-8"?>
<resources>
 
    <style name="SquareStyle">
        <item name="layout_widthPercent">@fraction/hundred_percent</item>
        <item name="layout_aspectRatio">@fraction/hundred_percent</item>
 
        //эти строчки можно убрать, они для наглядности
        <item name="android:background">#5a7</item>
        <item name="android:layout_gravity">center</item>
    </style>
</resources>


4. Тоже важно! Рядом с папкой values надо создать папку для горизонтальной ориентации, назовем ее values-land

5. Копируем туда файл square_layout_style.xml (который мы создали на прошлом шаге в папке values)
Дожно получиться так
Кликните здесь для просмотра всего текста
Название: Untitled.png
Просмотров: 19

Размер: 5.0 Кб


6. Открываем файл square_layout_style.xml из папки values-land и немного меняем содержимое, а точнее одну строку, но лучше просто копируем код
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="utf-8"?>
<resources>
 
    <style name="SquareStyle">
        <item name="layout_heightPercent">@fraction/hundred_percent</item>
        <item name="layout_aspectRatio">@fraction/hundred_percent</item>
 
        //эти строчки можно убрать, они для наглядности
        <item name="android:background">#5a7</item>
        <item name="android:layout_gravity">center</item>
    </style>
</resources>

Становится очевидно что разница только в том что для ландшафтной ориентации мы задаем размер лаута 100% по высоте. А в файле values для портретной ориентации мы задали 100% по ширине.

7. Теперь задаем сами размеры. В папке values, создаем файл fractions.xml и копиреум туда этот код
Кликните здесь для просмотра всего текста
XML
1
2
3
4
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <fraction name="hundred_percent">100%</fraction>
</resources>


8. И напоследок файл с 16-ю кнопками. Там ничего интересного, но без него не взлетит.
Кликните здесь для просмотра всего текста
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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
 
    <LinearLayout
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="1" />
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="2" />
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="3" />
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="4" />
 
    </LinearLayout>
 
    <LinearLayout
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="5" />
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="6" />
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="7" />
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="8" />
 
    </LinearLayout>
 
    <LinearLayout
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="9" />
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="10" />
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="11" />
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="12" />
 
    </LinearLayout>
 
    <LinearLayout
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="13" />
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="14" />
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="15" />
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="16" />
 
    </LinearLayout>
 
</LinearLayout>


10. Чуть не забыл )
Разметка активити, обычно это файл activity_main.xml
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="utf-8"?>
<android.support.percent.PercentFrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
 
    <FrameLayout
        style="@style/SquareStyle">
 
        <include layout="@layout/sixteen_squares"/>
 
    </FrameLayout>
 
</android.support.percent.PercentFrameLayout>

Без разницы где в разметке будет эта конструкция. Для простоты я убрал все остальные лаяуты и тулбар, но это не принципиально.

У меня в студии превьюшка не всегда перерисовывается, поэтому либо нажимаем refresh либо смотрим на в превью, а на устройстве.

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