Scrollwork

Phone screens tend to be small, which requires developers to use some tricks to present a lot of information in the limited available space. One trick for doing this is to use scrolling, so only part of the information is visible at one time, and the rest is available via scrolling up or down.

ScrollView is a container that provides scrolling for its contents. You can take a layout that might be too big for some screens, wrap it in a ScrollView, and still use your existing layout logic. It just so happens that the user can see only part of your layout at one time; the rest is available via scrolling.

For example, here is a ScrollView used in an XML layout file (from the Containers/Scroll demo in the Source Code area of http://apress.com):

<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout width="fill parent" android:layout height="wrap content"> <TableLayout android:layout width="fill parent" android:layout height="fill parent" android:stretchColumns="0"> <TableRow> <View android:layout height="80px" android:background="#000000"/> <TextView android:text="#000000" android:paddingLeft="4px" android:layout gravity="center vertical" /> </TableRow> <TableRow> <View android:layout height="80px" android:background="#440000" /> <TextView android:text="#440000" android:paddingLeft="4px" android:layout gravity="center vertical" /> </TableRow> <TableRow> <View android:layout height="80px" android:background="#884400" /> <TextView android:text="#884400" android:paddingLeft="4px" android:layout gravity="center vertical" /> </TableRow>

<TableRow> <View android:layout height="80px" android:background="#aa8844" /> <TextView android:text="#aa8844" android:paddingLeft="4px" android:layout gravity="center vertical" /> </TableRow> <TableRow> <View android:layout height="80px" android:background="#ffaa88" /> <TextView android:text="#ffaa88" android:paddingLeft="4px" android:layout gravity="center vertical" /> </TableRow> <TableRow> <View android:layout height="80px" android:background="#ffffaa" /> <TextView android:text="#ffffaa" android:paddingLeft="4px" android:layout gravity="center vertical" /> </TableRow> <TableRow> <View android:layout height="80px" android:background="#ffffff" /> <TextView android:text="#ffffff" android:paddingLeft="4px" android:layout gravity="center vertical" /> </TableRow> </TableLayout> </ScrollView>

Without the ScrollView, the table would take up at least 560 pixels (7 rows at 80 pixels each, based on the View declarations). There may be some devices with screens capable of showing that much information, but many will be smaller. The ScrollView lets us keep the table as is, but present only part of it at a time.

On the stock Android emulator, when the activity is first viewed, you see what's shown in Figure 7-8.

El HI]® 12:36 AM

ScrollViewDemo

#000001

#440001

#884401

#aa884,:

#ffaa88

Figure 7-8. The ScrollViewDemo sample application

Notice how only five rows and part of the sixth are visible. By pressing the up/down buttons on the directional pad, you can scroll up and down to see the remaining rows. Also note how the right side of the content gets clipped by the scrollbar—be sure to put some padding on that side or otherwise ensure your own content does not get clipped in that fashion.

CHAPTER 8

0 0

Post a comment