Snackbar
を表示するのと同じように、アクティビティの開始時にAndroid Toast
(Android.support.design.widget.Snackbar)
を表示したい。
しかし、問題は、次のようにSnackbar
を作成するときに親レイアウトを指定する必要があることです。
Snackbar.make(parentlayout, "This is main activity", Snackbar.LENGTH_LONG)
.setAction("CLOSE", new View.OnClickListener() {
@Override
public void onClick(View view) {
}
})
.setActionTextColor(getResources().getColor(Android.R.color.holo_red_light ))
.show();
クリックイベントなしでアクティビティの開始時にSnackbar
を表示するときに親レイアウトを与える方法(クリックイベントである場合、簡単に親ビューを渡すことができます)。
Activity's
XML内のView
をポイントするだけです。たとえば、ルートviewGroupにIDを指定して、次を使用できます。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
View parentLayout = findViewById(Android.R.id.content);
Snackbar.make(parentLayout, "This is main activity", Snackbar.LENGTH_LONG)
.setAction("CLOSE", new View.OnClickListener() {
@Override
public void onClick(View view) {
}
})
.setActionTextColor(getResources().getColor(Android.R.color.holo_red_light ))
.show();
//Other stuff in OnCreate();
}
これまで、スナックバーを表示するのに苦労していました。スナックバーを表示する最も簡単な方法を次に示します。メインアクティビティの開始時に表示するには、これらの2行をOnCreate()
内に入れるだけです
Snackbar snackbar = Snackbar.make(findViewById(Android.R.id.content), "Welcome To Main Activity", Snackbar.LENGTH_LONG);
snackbar.show();
追伸Android Design Supportをインポートしたことを確認してください(質問で述べたとおり)。
コトリンの場合
Snackbar.make(findViewById(Android.R.id.content), message, Snackbar.LENGTH_SHORT).show()
これを試して
Snackbar.make(findViewById(Android.R.id.content), "Got the Result", Snackbar.LENGTH_LONG)
.setAction("Submit", mOnClickListener)
.setActionTextColor(Color.RED)
.show();
onCreateでこのメソッドを呼び出します
Snackbar snack = Snackbar.make(
(((Activity) context).findViewById(Android.R.id.content)),
message + "", Snackbar.LENGTH_SHORT);
snack.setDuration(Snackbar.LENGTH_INDEFINITE);//change Duration as you need
//snack.setAction(actionButton, new View.OnClickListener());//add your own listener
View view = snack.getView();
TextView tv = (TextView) view
.findViewById(Android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);//change textColor
TextView tvAction = (TextView) view
.findViewById(Android.support.design.R.id.snackbar_action);
tvAction.setTextSize(16);
tvAction.setTextColor(Color.WHITE);
snack.show();
OnCreate内で次のコードを使用するだけで簡単に実行できます。 Androidのデフォルトレイアウトを使用する
Snackbar.make(findViewById(Android.R.id.content),"Your Message",Snackbar.LENGTH_LONG).show();
スナックバーを表示するためのユーティリティ機能
fun showSnackBar(activity: Activity, message: String, action: String? = null,
actionListener: View.OnClickListener? = null, duration: Int = Snackbar.LENGTH_SHORT) {
val snackBar = Snackbar.make(activity.findViewById(Android.R.id.content), message, duration)
.setBackgroundColor(Color.parseColor("#CC000000")) // todo update your color
.setTextColor(Color.WHITE)
if (action != null && actionListener!=null) {
snackBar.setAction(action, actionListener)
}
snackBar.show()
}
アクティビティでの使用例
showSnackBar(this, "No internet")
showSnackBar(this, "No internet", duration = Snackbar.LENGTH_LONG)
showSnackBar(activity, "No internet", "OK", View.OnClickListener {
// handle click
})
フラグメントで使用する例
showSnackBar(getActivity(), "No internet")
お役に立てば幸いです
このライブラリを試すことができます。これは、Androidデフォルトのスナックバーのラッパーです。 https://github.com/ChathuraHettiarachchi/CSnackBar
Snackbar.with(this,null)
.type(Type.SUCCESS)
.message("Profile updated successfully!")
.duration(Duration.SHORT)
.show();
これには、複数のタイプのスナックバーと、カスタムビューが統合されたスナックバーも含まれます