web-dev-qa-db-ja.com

アクティビティの開始時にスナックバーを表示する方法は?

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を表示するときに親レイアウトを与える方法(クリックイベントである場合、簡単に親ビューを渡すことができます)。

77
Sudheesh Mohan

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();
}
163
David Corsalini

これまで、スナックバーを表示するのに苦労していました。スナックバーを表示する最も簡単な方法を次に示します。メインアクティビティの開始時に表示するには、これらの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()
15
devDeejay

これを試して

Snackbar.make(findViewById(Android.R.id.content), "Got the Result", Snackbar.LENGTH_LONG)
                        .setAction("Submit", mOnClickListener)
                        .setActionTextColor(Color.RED)
                        .show();
4
Mohammad

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();
2
Xar E Ahmer

OnCreate内で次のコードを使用するだけで簡単に実行できます。 Androidのデフォルトレイアウトを使用する

Snackbar.make(findViewById(Android.R.id.content),"Your Message",Snackbar.LENGTH_LONG).show();
1
Jarin Rocks

スナックバーを表示するためのユーティリティ機能

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")

お役に立てば幸いです

1
Phan Van Linh

このライブラリを試すことができます。これは、Androidデフォルトのスナックバーのラッパーです。 https://github.com/ChathuraHettiarachchi/CSnackBar

Snackbar.with(this,null)
    .type(Type.SUCCESS)
    .message("Profile updated successfully!")
    .duration(Duration.SHORT)
    .show();

これには、複数のタイプのスナックバーと、カスタムビューが統合されたスナックバーも含まれます

1