반응형

Toast가 여러 줄로 출력되지 않는 경우는 디바이스의 화면 크기텍스트의 길이 때문이다. 그래서 여러 줄을 출력하기위해 TextView를 사용하는 MultiLine Toast를 만들어 보았다.

 

1. res/layout/multiline_toast.xml 파일 생성:

<!-- res/layout/multiline_toast.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@android:color/black"
    android:padding="10dp"
    android:orientation="vertical">

    <TextView
        android:id="@+id/multiline_toast_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@android:color/white"
        android:textSize="16sp"/>
</LinearLayout>

 

2. showMultiLineToast 함수 작성:

private fun showMultiLineToast(message: String) {
    // 1. LayoutInflater를 사용해 multiline_toast 레이아웃을 불러옴
    val inflater = layoutInflater
    val layout = inflater.inflate(R.layout.multiline_toast, findViewById(R.id.multiline_toast_text))

    // 2. multiline_toast 레이아웃의 TextView에 메시지를 설정
    val textView: TextView = layout.findViewById(R.id.multiline_toast_text)
    textView.text = message

    // 3. Toast에 multi-line layout을 설정
    with(Toast(applicationContext)) {
        duration = Toast.LENGTH_LONG
        view = layout
        show()
    }
}

 

3. 사용 예시:

val message = """
    BLE 스캔 성공:
    deviceName: ${result.deviceName}
    RSSI: ${result.rssi}
    data: ${result.data}
""".trimIndent()

showMultiLineToast(message)  // Multi-line Toast로 출력

 

 

반응형
블로그 이미지

SKY STORY

,