This is an old revision of the document!
Table of Contents
Under development.
Chapter 5 notes
p. 167
If you fire up the Stopwatch app from the previous chapter, you'll see that Android Studio created a dimens.xml
file is app/src/main/res/values
for you:
- dimens.xml
<resources> <!-- Default screen margins, per the Android Design guidelines. --> <dimen name="activity_horizontal_margin">16dp</dimen> <dimen name="activity_vertical_margin">16dp</dimen> <dimen name="fab_margin">16dp</dimen> </resources>
However, it looks like the padding values used in the RelativeLayout of content_stopwatch.xml
uses literals rather than these resource values. Don't be misled: once again it's Android Studio trying to be helpful by showing you the value that the resource resolves to. If you hover over each of the values and you should see something that matches the following:
- content_stopwatch.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" ...
pp. 174-186
Create a new project called “Linear Layout Demo” to experiment with the changes described in this section. Call the main activity, “Send Message”. After creating the default project, you will need to convert the main RelativeLayout to a LinearLayout. One way to do this is:
- Open
content_send_message.xml
in Text mode. - Replace the “Relative” text in the first tag with “Linear”. The closing tag should automatically change, but if it doesn't, change it manually.
- Within the LinearLayout item, add the following attribute:
android:orientation="vertical"
just after
android:layout_height=“match_parent”
.
Now you can add the new Views and other code presented upto p.186.
p. 181
Make sure the attribute you add to the EditText is android:gravity
and not android:layout_gravity
. On my computer, when I preview this change on the “Design” tab, the Button gets hidden behind the bottom navigation bar. It shows up as expected on the emulator though.
p. 183
Make sure the attribute you add to the Button is android:layout_gravity
and not android:gravity
.
So, what's the difference between android:gravity
and android:layout_gravity
?
android:gravity
specifies where the View's contents should be placed within the View.android:layout_gravity
specifies where the View itself should be placed inside its parent.
A Subtle, but important, distinction.
Additional notes
After all this, you might be wondering why you don't just use the drag-and-drop UI builder on the “Design” tab for everything rather than code by hand. The answer is twofold:
- Crawl before you walk. To use the UI builder effectively, you need to know what it is doing.
- The UI builder only gets you so far. Typically you need to change the code that the UI builder generated for you. So you need to know what the code does.