スナックバーを作成しようとしています。 Javaアプリからのコードは、Java Android StudioのKotlinコンバーターを使用して変換されました。次に、さまざまな多くの異なるウェブサイトでの例や、Kotlinプログラミングクックブックのコードを実装することも試みました。以下の機能しない例をすべて掲載します。質問は、Snackbarを表示する適切な構文を作成する方法ですか?btnSNACKをクリックしますスナックバーを表示するonClick = onSNACK
これは私たちのJavaからKotlinコンバーターへのコードで、これを本当に使用したいです。
fun onSNACK(view: View){
//Snackbar(view)
//val snackbar = Snackbar(view, "Permission Granted", Snackbar.LENGTH_LONG).setAction("Action", null).show()
snackbar.make(view, "Replace with your own action",
snackbar.LENGTH_LONG).setAction("Action", null).show()
snackbar.setActionTextColor(Color.BLUE)
val snackbarView = snackbar.getView()
snackbarView.setBackgroundColor(Color.LTGRAY)
val textView =
snackbarView.findViewById(Android.support.design.R.id.snackbar_text)
textView.setTextColor(Color.BLUE)
textView.setTextSize(28f)
snackbar.show()
}
次の試行はこのコードでした
class Snackbar{
object LENGTH_LONG {
}
fun show() {
}
}
fun onSNACK(view: View){
snackbar = Snackbar.make(this, "Welcome to Android Teachers..!!",
Snackbar.LENGTH_LONG)
snackbar.show()
}
私たちのレイアウトは、スナックバーを持つアクティビティのRelativeLayout(RL)です。
class Snackbar(view: View?): Any() {
object LENGTH_SHORT {}
fun View.snack(message: String, length: Int = Toast.LENGTH_LONG, f: Snackbar.
() -> Unit) {
val snack = Snackbar.make(this.findViewById(R.id.RL), message, length)
snack.f()
snack.show()
}
私たちはこれがうまくいくと思いましたコードの最初の行はトップレベルで宣言されました
lateinit var snackbar: Snackbar//top level
fun onSNACK(){
btnSNACK.setOnClickListener { view ->
Snackbar.make(view, "Replace with your own action",
Snackbar.LENGTH_LONG)
.setAction("Action", null).show()
}
}
これらのさまざまなメソッドの有無にかかわらず、Snackbarクラスを使用しました。これらの例のほとんどでは、すべての赤い警告を削除できましたが、「make」という作業は同じ提案「変数名の変更」を提供するだけで、Kotlinの初心者の観点からは意味がありません。 Ankoプラグインを使用したくありません。Snackbarを参照するインポートもありません。そうです。jetbrainsstdlib v7依存関係があります。デザイン依存関係はありません。
誰かがあまりカスタマイズする必要がない場合は、次のように直接使用できます。
view.snack("Your message")
これを行うには、拡張関数を定義します(できれば 分離されたファイル ):
fun View.snack(message: String, duration: Int = Snackbar.LENGTH_LONG) {
Snackbar.make(this, message, duration).show()
}