programing

Android 용 Kotlin.

copyandpastes 2021. 1. 16. 11:01
반응형

Android 용 Kotlin. 토스트


Android 용 다른 Kotlin 예제에서는 toast ( "Some message ...") 또는 toastLong ( "Some long message")를 볼 수 있습니다. 예를 들면 :

view.setOnClickListener { toast("Click") }

내가 이해했듯이 그것은 활동을위한 확장 기능입니다.

이 toast () 함수를 정의하는 방법과 프로젝트를 통해 사용할 수있는 위치 (어디에서)?


다음에 대한 확장 기능이 될 수 있습니다 Context.

fun Context.toast(message: CharSequence) = 
    Toast.makeText(this, message, Toast.LENGTH_SHORT).show()

프로젝트의 어디에나 배치 할 수 있습니다. 예를 들어, 파일을 정의하고 mypackage.util.ContextExtensions.kt여기에 최상위 기능으로 넣을 수 있습니다.

Context인스턴스에 액세스 할 수있을 때마다이 함수를 가져 와서 사용할 수 있습니다.

import mypackage.util.ContextExtensions.toast

fun myFun(context: Context) {
    context.toast("Hello world!")
}

실제로 Kotlin의 확장 기능인 Anko 의 일부입니다 . 구문은 다음과 같습니다.

toast("Hi there!")
toast(R.string.message)
longToast("Wow, such a duration")

앱 수준 build.gradle에서implementation "org.jetbrains.anko:anko-common:0.8.3"

import org.jetbrains.anko.toast활동에 추가 하십시오.


이것은 Kotlin의 한 줄 솔루션입니다.

Toast.makeText(this@MainActivity, "Its toast!", Toast.LENGTH_SHORT).show()

이 시도

활동 중

Toast.makeText(applicationContext, "Test", Toast.LENGTH_LONG).show()

또는

Toast.makeText(this@MainActiivty, "Test", Toast.LENGTH_LONG).show()

조각에서

Toast.makeText(activity, "Test", Toast.LENGTH_LONG).show()

Kotlin 과 함께 Anko사용하는 동안 내부 조각 은 다음 중 하나를 사용합니다.

 activity.toast("string message") 

또는

 context.toast("string message")

또는

 view.holder.context.toast("string message")

사용하지 않고 anko자신 만의 Toast확장 을 만들고 싶은 경우 . kotlin 파일 (클래스없이)에 정의 된 인라인 (또는 인라인없이) 확장을 만들 수 있으며이를 사용하여 모든 클래스에서이 함수에 액세스 할 수 있습니다.

inline fun Context.toast(message:String){
   Toast.makeText(this, message , duration).show()
}

용법:

활동에서,

toast("Toast Message")

조각에서,

context?.toast("Toast Message")

주어진 링크 https://gist.github.com/felipearimateia/ee651e2694c21de2c812063980b89ca3 에서 토스트하는 매우 쉬운 방법을 찾았습니다 . 이 링크에서는 컨텍스트 대신 활동이 사용됩니다. 시도 해봐.


Context(이미 지적한 다른 것과 마찬가지로) 단순히 확장 기능입니다 .

Anko 에서 미리 정의 된 많은 Android 확장 기능을 찾을 수 있으며 , 이는 많은 자습서에서도 사용하는 것일 수 있습니다.


@nhaarman의 답변을 추가하기 resourceId위해 -> 아마도 지원 을 추가하고 싶을 것입니다

fun Context.toast(resourceId: Int) = toast(getString(resourceId))
fun Context.toast(message: CharSequence) = 
    Toast.makeText(this, message, Toast.LENGTH_SHORT).show()

이 확장 기능으로 토스트 , 당신이 활동뿐만 아니라 조각에서 그들을 호출 할 수 있습니다, 당신은 통과 할 수있다 같은 Context활동이나 getApplication()또한이 생성 것, 조각을 위해 Toast.LENGTH_SHORT당신은 매개 변수로 전달 걱정할 필요가 없습니다, 기본적으로 하지만 필요한 경우 덮어 쓸 수도 있습니다.

Kotlin

fun Context.toast(context: Context = applicationContext, message: String, duration: Int = Toast.LENGTH_SHORT){
        Toast.makeText(context, message , duration).show()
    }

용법

toast(this, "John Doe")

기간을 덮어 쓰려면.

toast(this, "John Doe", Toast.LENGTH_LONG)

여기에서 소스 코드 다운로드 ( Android Kotlin의 Custom Toast )

fun Toast.createToast(context: Context, message: String, gravity: Int, duration: Int, backgroucolor: String, imagebackgroud: Int) {
        val inflater: LayoutInflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
        /*first parameter is the layout you made
        second parameter is the root view in that xml
         */
        val layout = inflater.inflate(R.layout.custom_toast, (context as Activity).findViewById(R.id.custom_toast_container))

        layout.findViewById(R.id.tv_message).text = message
        layout.setBackgroundColor(Color.parseColor(backgroucolor))
        layout.findViewById(R.id.iv_image).iv_image.setImageResource(imagebackgroud)
        setGravity(gravity, 0, 100)
        setDuration(Toast.LENGTH_LONG);

        setView(layout);
        show()
    }

감사!


the way I use it simply creating an Object/Class

object UtilKotlin {
    fun showMessage(context: Context, message: String) {
        Toast.makeText(context, message, Toast.LENGTH_SHORT).show()
    }
}

and calling the method

UtilKotlin.showMessage(activity, "Sets 0 !") // in activity trying this

Custom Toast with Background color Text size AND NO XML file inflated Try the code without setting the Background color

    fun theTOAST(){

    val toast = Toast.makeText(this@MainActivity, "Use View Person List",Toast.LENGTH_LONG)
    val view = toast.view
    view.setBackgroundColor(Color.TRANSPARENT)
    val text = view.findViewById(android.R.id.message) as TextView
    text.setTextColor(Color.BLUE)
    text.textSize = (18F)
    toast.show()
}

ReferenceURL : https://stackoverflow.com/questions/36826004/kotlin-for-android-toast

반응형