// TheRaven Example // Source file: MainActivity.kt // Display the Edgar Allan Poe poem The Raven in // a scrollable column. Create a new directory named // raw in the res folder, then copy theraven.txt // file into that directory. package it372.ssmith.theraven2 import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import java.util.Scanner class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { Layout( ) } } } @Composable fun Layout( ) { // A Column needs a variable to keep track // of the scroll state. var scrollState = rememberScrollState( ) Column(modifier = Modifier .padding(20.dp) .verticalScroll(scrollState) .fillMaxSize( )) { var output = "" val context = LocalContext.current val inputStream = context.resources.openRawResource(R.raw.theraven) val scanner = Scanner(inputStream) while (scanner.hasNextLine( )) { output += scanner.nextLine() + "\n" } Text( text = output, modifier = Modifier.padding(8.dp), fontSize = 12.sp ) } } @Preview(showBackground = true) @Composable fun GreetingPreview() { Layout() }