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
'programing' 카테고리의 다른 글
Java 도구를 초기화하는 동안 Eclipse 내부 오류 (0) | 2021.01.16 |
---|---|
루트 사용자로부터 bower를 실행하십시오. 가능합니까? (0) | 2021.01.16 |
Mac 10.9 이후 BREW 업데이트가 작동하지 않음 (0) | 2021.01.16 |
TextInputLayout.setError ()는 오류를 제거한 후 빈 공간을 남깁니다. (0) | 2021.01.16 |
Windows (v10)에서 Android Studio를 완전히 제거하는 방법은 무엇입니까? (0) | 2021.01.16 |