1
<!--
2
Copyright (C) 2013 The Android Open Source Project
3
4
Licensed under the Apache License, Version 2.0 (the "License");
5
you may not use this file except in compliance with the License.
6
You may obtain a copy of the License at
7
8
http://www.apache.org/licenses/LICENSE-2.0
9
10
Unless required by applicable law or agreed to in writing, software
11
distributed under the License is distributed on an "AS IS" BASIS,
12
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
See the License for the specific language governing permissions and
14
limitations under the License.
15
-->
16
17
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
18
xmlns:tools="http://schemas.android.com/tools"
19
android:layout_width="match_parent"
20
android:layout_height="match_parent"
21
android:gravity="center_horizontal">
22
<ScrollView
23
android:layout_width="match_parent"
24
android:layout_height="match_parent"
25
android:fillViewport="false">
26
<RelativeLayout
27
android:layout_width="match_parent"
28
android:layout_height="match_parent"
29
android:paddingLeft="@dimen/activity_horizontal_margin"
30
android:paddingRight="@dimen/activity_horizontal_margin"
31
android:paddingTop="@dimen/activity_vertical_margin"
32
android:paddingBottom="@dimen/activity_vertical_margin"
33
tools:context=".MainActivity"
34
>
35
36
<!-- Notice the presence of nextFocusDown/nextFocusUp on the elements below. You can
37
also use nextFocusLeft/nextFocusRight. This tells the system in what order elements
38
should be navigated through. If not present, the system will make a guess based on
39
element location in the layout. -->
40
<TextView
41
android:layout_width="wrap_content"
42
android:layout_height="wrap_content"
43
android:text="Buttons"
44
android:id="@+id/buttonsLabel"
45
android:layout_alignParentTop="true"
46
android:layout_alignParentLeft="true"
47
android:nextFocusDown="@+id/composeButton"/>
48
49
<!-- This is a regular, text-based button. No contentDescription is needed, since the
50
text field sufficiently describes the action performed. -->
51
<Button
52
android:layout_width="wrap_content"
53
android:layout_height="wrap_content"
54
android:text="@string/composeButtonLabel"
55
android:id="@+id/composeButton"
56
android:layout_below="@+id/buttonsLabel"
57
android:layout_alignLeft="@+id/buttonsLabel"
58
android:nextFocusUp="@+id/buttonsLabel"
59
android:nextFocusDown="@+id/checkboxesLabel"
60
/>
61
62
<!-- The next two buttons are different types of image-based buttons. -->
63
65
<!-- Adding a contentDescription is needed for accessibility, since no text is present.
66
Since the contentDescription is read verbatim, you may want to be a bit more
67
descriptive than usual, such as adding "button" to the end of your description, if
68
appropriate. -->
69
<ImageButton
70
android:layout_width="wrap_content"
71
android:layout_height="wrap_content"
72
android:id="@+id/discardButton"
73
android:layout_alignTop="@+id/composeButton"
74
android:layout_toRightOf="@+id/composeButton"
75
android:src="@drawable/ic_action_discard"
76
android:layout_alignBottom="@+id/composeButton"
77
android:contentDescription="@string/discardButtonDescription"
78
android:scaleType="fitCenter"
79
android:nextFocusUp="@+id/buttonsLabel"
80
android:nextFocusDown="@+id/checkboxesLabel"
81
/>
83
84
<ImageButton
85
android:layout_width="wrap_content"
86
android:layout_height="wrap_content"
87
android:id="@+id/infoButton"
88
android:layout_alignTop="@+id/discardButton"
89
android:layout_toRightOf="@+id/discardButton"
90
android:src="@drawable/ic_action_info"
91
android:layout_alignBottom="@+id/discardButton"
92
android:layout_alignRight="@+id/hyperspaceCheckbox"
93
android:scaleType="fitCenter"
94
android:background="?android:selectableItemBackground"
95
android:padding="5dp"
96
android:contentDescription="@string/infoButtonDescription"
97
android:nextFocusUp="@+id/buttonsLabel"
98
android:nextFocusDown="@+id/checkboxesLabel"
99
/>
100
101
<TextView
102
android:layout_width="wrap_content"
103
android:layout_height="wrap_content"
104
android:text="@string/checkboxesLabel"
105
android:id="@+id/checkboxesLabel"
106
android:layout_below="@+id/composeButton"
107
android:layout_alignLeft="@+id/composeButton"
108
android:nextFocusUp="@+id/composeButton"
109
android:nextFocusDown="@+id/jetpackCheckbox"
110
/>
111
112
<!-- Like a text-based button, checkboxes with text will often work correctly as-is.
113
If your checkboxes do not have a text attribute, you will need to add a
114
contentDescriptoin. -->
115
<CheckBox
116
android:layout_width="wrap_content"
117
android:layout_height="wrap_content"
118
android:text="@string/jetpackCheckboxLabel"
119
android:id="@+id/jetpackCheckbox"
120
android:layout_below="@+id/checkboxesLabel"
121
android:layout_alignLeft="@+id/checkboxesLabel"
122
android:checked="false"
123
android:nextFocusUp="@+id/checkboxesLabel"
124
android:nextFocusDown="@+id/hyperspaceCheckbox"
125
/>
126
127
<CheckBox
128
android:layout_width="wrap_content"
129
android:layout_height="wrap_content"
130
android:text="@string/hyperspaceCheckboxLabel"
131
android:id="@+id/hyperspaceCheckbox"
132
android:layout_below="@+id/jetpackCheckbox"
133
android:layout_alignLeft="@+id/jetpackCheckbox"
134
android:checked="false"
135
android:nextFocusUp="@+id/jetpackCheckbox"
136
android:nextFocusDown="@+id/imagesAndTextLabel"
137
/>
138
139
<TextView
140
android:layout_width="wrap_content"
141
android:layout_height="wrap_content"
142
android:text="@string/imagesAndTextLabel"
143
android:id="@+id/imagesAndTextLabel"
144
android:layout_below="@+id/hyperspaceCheckbox"
145
android:layout_alignLeft="@+id/hyperspaceCheckbox"
146
android:nextFocusUp="@+id/hyperspaceCheckbox"
147
android:nextFocusDown="@+id/partlyCloudImage"
148
/>
149
150
<!-- Images should have a contentDescription if they convey any meaningful
151
information. Images that are purely decorative may not need a contentDescription,
152
however. -->
153
<ImageView
154
android:layout_width="wrap_content"
155
android:layout_height="wrap_content"
156
android:id="@+id/partlyCloudyImage"
157
android:layout_below="@+id/imagesAndTextLabel"
158
android:layout_alignLeft="@+id/imagesAndTextLabel"
159
android:src="@drawable/partly_cloudy"
160
android:contentDescription="@string/partlyCloudyDescription"
161
android:layout_alignRight="@+id/discardButton"
162
android:nextFocusUp="@+id/imagesAndTextLabel"
163
android:nextFocusDown="@+id/customViewLabel"
164
/>
165
166
<!-- TextViews are typically self describing, so do not need extra modifications. -->
167
<TextView
168
android:layout_width="wrap_content"
169
android:layout_height="wrap_content"
170
android:textAppearance="?android:attr/textAppearanceLarge"
171
android:text="@string/temperature"
172
android:textSize="60sp"
173
android:id="@+id/temperatureText"
174
android:layout_alignTop="@+id/partlyCloudyImage"
175
android:layout_toRightOf="@+id/partlyCloudyImage"
176
android:layout_alignBottom="@+id/partlyCloudyImage"
177
android:gravity="center_vertical"
178
android:nextFocusUp="@+id/imagesAndTextLabel"
179
android:nextFocusDown="@+id/customViewLabel"
180
/>
181
182
<TextView
183
android:layout_width="wrap_content"
184
android:layout_height="wrap_content"
185
android:text="@string/customViewLabel"
186
android:id="@+id/customViewLabel"
187
android:layout_below="@+id/partlyCloudyImage"
188
android:layout_alignLeft="@+id/partlyCloudyImage"
189
android:nextFocusUp="@+id/partlyCloudImage"
190
android:nextFocusDown="@+id/dialView"
191
/>
192
193
<!-- Custom views require additonal code changes. See DialView.java for more
194
details. -->
195
<com.example.android.basicaccessibility.DialView
196
android:layout_width="200dp"
197
android:layout_height="200dp"
198
android:id="@+id/dialView"
199
android:layout_below="@+id/customViewLabel"
200
android:layout_alignLeft="@+id/partlyCloudyImage"
201
android:nextFocusUp="@+id/customViewLabel"
202
/>
203
204
</RelativeLayout>
205
</ScrollView>
206
</LinearLayout>