본문 바로가기
안드로이드 코틀린

[kotlin][Android] 안드로이드에서 긴 글 가져오기

by teamnova 2022. 7. 7.
728x90

안녕하세요.

오늘은 안드로이드에서 줄바꿈이 적용된 긴 글을 텍스트뷰에 위치시켜야 할 때 사용할 수 있는 방법에 대해 알아보겠습니다.

 

1. 필요한 텍스트 파일을 만들어서 assets 폴더에 넣어줍니다.

  * 만약 assets 폴더가 없다면  [app 우클릭] -> [New] -> [Forder] -> [Asset Folder]를 만드시면 됩니다.

 

에셋 폴더 만들기
에셋폴더에 필요한 파일 넣기

 

2. 아래와 같은 메서드를 만들어줍니다. 

 

fun getAssetsTextString(mContext: Context, fileName: String): String{
    val termsString = StringBuilder()
    val reader: BufferedReader

    try {
        reader = BufferedReader(
            InputStreamReader(mContext.resources.assets.open("$fileName.txt"))
        )

        var str: String?
        while (reader.readLine().also { str = it } != null) {
            termsString.append(str)
            termsString.append('\n') //줄 변경
        }
        reader.close()
        return termsString.toString()

    } catch (e: IOException) {
        e.printStackTrace()
    }
    return "fail"
}

 

3. 필요한 곳에서 호출해서 뷰에 넣어줍니다.

val tvTest = findViewById<TextView>(R.id.tv_test)
tvTest.text = getAssetsTextString(this,"test")

"test"자리에는 사용할 파일의 이름을 넣어주면 됩니다.

 

4. 결과 

 

줄바꿈이 잘 적용되어 뷰에 띄워진 걸 확인할 수 있습니다. 

 

> 전체 코드 입니다.

- MainActivity.kt

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val tvTest = findViewById<TextView>(R.id.tv_test)
        tvTest.text = getAssetsTextString(this,"test")

    }

    fun getAssetsTextString(mContext: Context, fileName: String): String{
        val termsString = StringBuilder()
        val reader: BufferedReader

        try {
            reader = BufferedReader(
                InputStreamReader(mContext.resources.assets.open("$fileName.txt"))
            )

            var str: String?
            while (reader.readLine().also { str = it } != null) {
                termsString.append(str)
                termsString.append('\n') //줄 변경
            }
            reader.close()
            return termsString.toString()

        } catch (e: IOException) {
            e.printStackTrace()
        }
        return "fail"
    }
}

- activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/tv_test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/black"
        android:textSize="16sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>