[android] 활동이 시작될 때 스낵바를 표시하는 방법은 무엇입니까?

Snackbar (android.support.design.widget.Snackbar)활동이 시작될 때 Android를 표시하고 싶습니다 Toast.

하지만 문제는 다음 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클릭 이벤트없이 액티비티 시작 부분에 표시 할 때 부모 레이아웃을 제공하는 방법 (클릭 이벤트 인 경우 부모보기를 쉽게 전달할 수 있음)?



답변

XML View내부를 가리 킵니다 Activity's. 예를 들어 루트 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();
}


답변

지금까지 Snackbar를 표시하는 데 어려움을 겪었습니다. 다음은 스낵바를 표시하는 가장 간단한 방법입니다. 주요 활동 시작으로 표시하려면이 두 줄을OnCreate()

    Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content), "Welcome To Main Activity", Snackbar.LENGTH_LONG);
    snackbar.show();

추신 : Android 디자인 지원을 가져 왔는지 확인하십시오 (질문에서 언급했듯이).

Kotlin의 경우

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();


답변

쇼 스낵바를위한 유틸리티 기능

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

도움이되기를 바랍니다.


답변

이 라이브러리를 사용해 볼 수 있습니다. 이것은 안드로이드 기본 스낵바의 래퍼입니다. https://github.com/ChathuraHettiarachchi/CSnackBar

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

여기에는 여러 유형의 스낵바와 심지어 customview 통합 스낵바가 포함됩니다.


답변

onCreate 내에서 다음 코드를 사용하여 간단히 수행 할 수 있습니다. Android의 기본 레이아웃을 사용하여

Snackbar.make(findViewById(android.R.id.content),"Your Message",Snackbar.LENGTH_LONG).show();