1c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn/* 2c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * Copyright (C) 2010 The Android Open Source Project 3c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * 4c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License"); 5c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * you may not use this file except in compliance with the License. 6c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * You may obtain a copy of the License at 7c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * 8c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * http://www.apache.org/licenses/LICENSE-2.0 9c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * 10c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * Unless required by applicable law or agreed to in writing, software 11c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS, 12c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * See the License for the specific language governing permissions and 14c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * limitations under the License. 15c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn */ 16c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 17c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornpackage com.example.android.supportv4.app; 18c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 19c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport com.example.android.supportv4.Shakespeare; 20b1b8c06afc67ea8da6e390dc5be84182d839ede5Dianne Hackbornimport com.example.android.supportv4.R; 21c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 22c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.support.v4.app.Fragment; 23c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.support.v4.app.FragmentActivity; 24c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.support.v4.app.FragmentTransaction; 25c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.support.v4.app.ListFragment; 26c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 27c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.content.Intent; 28c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.content.res.Configuration; 29c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.os.Bundle; 30c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.util.TypedValue; 31c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.view.LayoutInflater; 32c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.view.View; 33c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.view.ViewGroup; 34c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.widget.ArrayAdapter; 35c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.widget.ListView; 36c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.widget.ScrollView; 37c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.widget.TextView; 38c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 39c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn/** 40c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * Demonstration of using fragments to implement different activity layouts. 41c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * This sample provides a different layout (and activity flow) when run in 42c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * landscape. 43c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn */ 44c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornpublic class FragmentLayoutSupport extends FragmentActivity { 45c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 46c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn//BEGIN_INCLUDE(main) 47c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn @Override 48c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn protected void onCreate(Bundle savedInstanceState) { 49c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn super.onCreate(savedInstanceState); 50c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 51c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn setContentView(R.layout.fragment_layout_support); 52c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn } 53c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn//END_INCLUDE(main) 54c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 55c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn /** 56c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * This is a secondary activity, to show what the user has selected 57c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * when the screen is not large enough to show it all in one activity. 58c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn */ 59c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn//BEGIN_INCLUDE(details_activity) 60c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn public static class DetailsActivity extends FragmentActivity { 61c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 62c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn @Override 63c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn protected void onCreate(Bundle savedInstanceState) { 64c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn super.onCreate(savedInstanceState); 65c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 66c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn if (getResources().getConfiguration().orientation 67c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn == Configuration.ORIENTATION_LANDSCAPE) { 68c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn // If the screen is now in landscape mode, we can show the 69c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn // dialog in-line with the list so we don't need this activity. 70c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn finish(); 71c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn return; 72c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn } 73c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 74c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn if (savedInstanceState == null) { 75c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn // During initial setup, plug in the details fragment. 76c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn DetailsFragment details = new DetailsFragment(); 77c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn details.setArguments(getIntent().getExtras()); 78c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn getSupportFragmentManager().beginTransaction().add( 79c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn android.R.id.content, details).commit(); 80c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn } 81c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn } 82c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn } 83c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn//END_INCLUDE(details_activity) 84c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 85c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn /** 86c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * This is the "top-level" fragment, showing a list of items that the 87c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * user can pick. Upon picking an item, it takes care of displaying the 88c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * data to the user as appropriate based on the currrent UI layout. 89c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn */ 90c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn//BEGIN_INCLUDE(titles) 91c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn public static class TitlesFragment extends ListFragment { 92c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn boolean mDualPane; 93c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn int mCurCheckPosition = 0; 94c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 95c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn @Override 96c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn public void onActivityCreated(Bundle savedInstanceState) { 97c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn super.onActivityCreated(savedInstanceState); 98c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 99c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn // Populate list with our static array of titles. 100c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn setListAdapter(new ArrayAdapter<String>(getActivity(), 101c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn R.layout.simple_list_item_checkable_1, 102c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn android.R.id.text1, Shakespeare.TITLES)); 103c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 104c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn // Check to see if we have a frame in which to embed the details 105c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn // fragment directly in the containing UI. 106c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn View detailsFrame = getActivity().findViewById(R.id.details); 107c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn mDualPane = detailsFrame != null && detailsFrame.getVisibility() == View.VISIBLE; 108c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 109c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn if (savedInstanceState != null) { 110c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn // Restore last state for checked position. 111c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn mCurCheckPosition = savedInstanceState.getInt("curChoice", 0); 112c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn } 113c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 114c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn if (mDualPane) { 115c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn // In dual-pane mode, the list view highlights the selected item. 116c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); 117c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn // Make sure our UI is in the correct state. 118c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn showDetails(mCurCheckPosition); 119c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn } 120c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn } 121c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 122c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn @Override 123c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn public void onSaveInstanceState(Bundle outState) { 124c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn super.onSaveInstanceState(outState); 125c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn outState.putInt("curChoice", mCurCheckPosition); 126c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn } 127c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 128c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn @Override 129c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn public void onListItemClick(ListView l, View v, int position, long id) { 130c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn showDetails(position); 131c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn } 132c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 133c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn /** 134c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * Helper function to show the details of a selected item, either by 135c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * displaying a fragment in-place in the current UI, or starting a 136c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * whole new activity in which it is displayed. 137c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn */ 138c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn void showDetails(int index) { 139c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn mCurCheckPosition = index; 140c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 141c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn if (mDualPane) { 142c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn // We can display everything in-place with fragments, so update 143c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn // the list to highlight the selected item and show the data. 144c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn getListView().setItemChecked(index, true); 145c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 146c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn // Check what fragment is currently shown, replace if needed. 147c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn DetailsFragment details = (DetailsFragment) 148c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn getFragmentManager().findFragmentById(R.id.details); 149c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn if (details == null || details.getShownIndex() != index) { 150c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn // Make new fragment to show this selection. 151c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn details = DetailsFragment.newInstance(index); 152c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 153c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn // Execute a transaction, replacing any existing fragment 154c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn // with this one inside the frame. 15529cbd1b6c507fa7b2ee34211b79db54fa567fd52Adam Powell getFragmentManager().beginTransaction() 15629cbd1b6c507fa7b2ee34211b79db54fa567fd52Adam Powell .replace(R.id.details, details) 15729cbd1b6c507fa7b2ee34211b79db54fa567fd52Adam Powell .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE) 15829cbd1b6c507fa7b2ee34211b79db54fa567fd52Adam Powell .commit(); 159c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn } 160c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 161c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn } else { 162c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn // Otherwise we need to launch a new activity to display 163c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn // the dialog fragment with selected text. 164c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn Intent intent = new Intent(); 165c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn intent.setClass(getActivity(), DetailsActivity.class); 166c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn intent.putExtra("index", index); 167c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn startActivity(intent); 168c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn } 169c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn } 170c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn } 171c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn//END_INCLUDE(titles) 172c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 173c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn /** 174c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * This is the secondary fragment, displaying the details of a particular 175c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * item. 176c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn */ 177c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn//BEGIN_INCLUDE(details) 178c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn public static class DetailsFragment extends Fragment { 179c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn /** 180c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * Create a new instance of DetailsFragment, initialized to 181c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * show the text at 'index'. 182c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn */ 183c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn public static DetailsFragment newInstance(int index) { 184c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn DetailsFragment f = new DetailsFragment(); 185c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 186c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn // Supply index input as an argument. 187c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn Bundle args = new Bundle(); 188c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn args.putInt("index", index); 189c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn f.setArguments(args); 190c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 191c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn return f; 192c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn } 193c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 194c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn public int getShownIndex() { 195c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn return getArguments().getInt("index", 0); 196c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn } 197c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 198c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn @Override 199c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn public View onCreateView(LayoutInflater inflater, ViewGroup container, 200c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn Bundle savedInstanceState) { 201c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn if (container == null) { 202c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn // We have different layouts, and in one of them this 203c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn // fragment's containing frame doesn't exist. The fragment 204c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn // may still be created from its saved state, but there is 205c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn // no reason to try to create its view hierarchy because it 206c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn // won't be displayed. Note this is not needed -- we could 207c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn // just run the code below, where we would create and return 208c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn // the view hierarchy; it would just never be used. 209c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn return null; 210c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn } 211c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 212c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn ScrollView scroller = new ScrollView(getActivity()); 213c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn TextView text = new TextView(getActivity()); 214c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn int padding = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 215c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn 4, getActivity().getResources().getDisplayMetrics()); 216c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn text.setPadding(padding, padding, padding, padding); 217c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn scroller.addView(text); 218c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn text.setText(Shakespeare.DIALOGUE[getShownIndex()]); 219c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn return scroller; 220c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn } 221c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn } 222c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn//END_INCLUDE(details) 223c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn} 224