수색…


통사론

  • Snackbar make (보기보기, CharSequence 텍스트, int 기간)
  • 스낵바 만들기 (보기보기, int resId, int 기간)

매개 변수

매개 변수 기술
전망 보기 : 부모를 찾을 수있는보기.
본문 CharSequence : 표시 할 텍스트입니다. 형식이 지정된 텍스트가 될 수 있습니다.
resId int : 사용할 문자열 리소스의 리소스 ID입니다. 형식이 지정된 텍스트가 될 수 있습니다.
지속 int : 메시지를 표시하는 기간입니다. LENGTH_SHORT, LENGTH_LONG 또는 LENGTH_INDEFINITE가 될 수 있습니다.

비고

Snackbar 는 작업에 대한 간단한 피드백을 제공합니다. 휴대 기기의 화면 하단과 큰 기기의 왼쪽 하단에 간단한 메시지가 표시됩니다. 스낵바는 화면의 다른 모든 요소 위에 표시되며 한 번에 하나씩 만 표시 할 수 있습니다.

시간 초과 또는 화면에서 사용자 상호 작용 이후, 특히 새로운 표면이나 활동을 불러오는 상호 작용 후 자동으로 사라집니다. 스낵바는 화면에서 스 와이프 할 수 있습니다.

SnackBar 를 사용하기 전에 build.gradle 파일에 디자인 지원 라이브러리 종속성을 추가해야합니다.

dependencies {
    compile 'com.android.support:design:25.3.1'
}

공식 문서

https://developer.android.com/reference/android/support/design/widget/Snackbar.html

간단한 스낵바 만들기

Snackbar 만들기는 다음과 같이 수행 할 수 있습니다.

Snackbar.make(view, "Text to display", Snackbar.LENGTH_LONG).show();

viewSnackbar 를 표시하는 데 사용할 적합한 부모를 찾는 데 사용됩니다. 일반적으로 이것은 XML에서 정의한 CoordinatorLayout 으로, 스 와이프하여 닫고 다른 위젯 (예 : FloatingActionButton )을 자동으로 이동하는 등의 기능을 추가 할 수 있습니다. CoordinatorLayout 가없는 경우에는 윈도우 장식의 컨텐츠 뷰가 사용됩니다.

매우 자주 Snackbar 작업을 추가합니다. 일반적인 사용 사례는 '실행 취소'작업입니다.

Snackbar.make(view, "Text to display", Snackbar.LENGTH_LONG)
        .setAction("UNDO", new View.OnClickListener() {
            @Override
               public void onClick(View view) {
                   // put your logic here

               }
         })
        .show();

Snackbar 를 만들어 나중에 표시 할 수 있습니다.

Snackbar snackbar = Snackbar.make(view, "Text to display", Snackbar.LENGTH_LONG); 
snackbar.show();

Snackbar 의 텍스트 색상을 변경하려면 다음을 수행하십시오.

Snackbar snackbar = Snackbar.make(view, "Text to display", Snackbar.LENGTH_LONG);
View view = snackbar .getView();
TextView textView = (TextView) view.findViewById(android.support.design.R.id.snackbar_text);
textView.setTextColor(Color.parseColor("#FF4500"));
snackbar.show();

기본적으로 Snackbar 그것을 잘 swipe.This 예제하는 방법을 보여줍니다의에 일축 가 슬쩍 남아에 스낵바를 닫습니다 .

맞춤 스낵 바

스낵바를 사용자 정의하는 기능

public static Snackbar makeText(Context context, String message, int duration) {
        Activity activity = (Activity) context;
        View layout;
        Snackbar snackbar = Snackbar
                .make(activity.findViewById(android.R.id.content), message, duration);
        layout = snackbar.getView();
        //setting background color
        layout.setBackgroundColor(context.getResources().getColor(R.color.orange));
        android.widget.TextView text = (android.widget.TextView) layout.findViewById(android.support.design.R.id.snackbar_text);
        //setting font color
        text.setTextColor(context.getResources().getColor(R.color.white));
        Typeface font = null;
        //Setting font 
        font = Typeface.createFromAsset(context.getAssets(), "DroidSansFallbackanmol256.ttf");
        text.setTypeface(font);
        return snackbar;

    }

프래그먼트 또는 활동에서 함수 호출

 SnackBar.makeText(MyActivity.this, "Please Locate your address at Map", Snackbar.LENGTH_SHORT).show();

스낵바 콜백 포함

Snackbar.Callback을 사용하여 snackbar가 사용자 또는 시간 초과에 의해 해제 된 경우 수신 대기 할 수 있습니다.

Snackbar.make(getView(), "Hi snackbar!", Snackbar.LENGTH_LONG).setCallback( new Snackbar.Callback() {
                @Override
                public void onDismissed(Snackbar snackbar, int event) {
                    switch(event) {
                        case Snackbar.Callback.DISMISS_EVENT_ACTION:
                            Toast.makeText(getActivity(), "Clicked the action", Toast.LENGTH_LONG).show();
                            break;
                        case Snackbar.Callback.DISMISS_EVENT_TIMEOUT:
                            Toast.makeText(getActivity(), "Time out", Toast.LENGTH_LONG).show();
                            break;
                    }
                }

                @Override
                public void onShown(Snackbar snackbar) {
                    Toast.makeText(getActivity(), "This is my annoying step-brother", Toast.LENGTH_LONG).show();
                }
            }).setAction("Go!", new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                }
            }).show();

맞춤 스낵 바

이 예는 사용자 정의 실행 취소 아이콘이있는 흰색 스낵 바를 보여줍니다.

Snackbar customBar = Snackbar.make(view , "Text to be displayed", Snackbar.LENGTH_LONG);
customBar.setAction("UNDO", new View.OnClickListener() {
    @Override
    public void onClick(View view) {
    //Put the logic for undo button here

    }
});

View sbView = customBar.getView();
//Changing background to White
sbView.setBackgroundColor(Color.WHITE));

TextView snackText = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text); 
if (snackText!=null) {
    //Changing text color to Black
   snackText.setTextColor(Color.BLACK);
}

TextView actionText = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_action);
if (actionText!=null) {
    // Setting custom Undo icon
    actionText.setCompoundDrawablesRelativeWithIntrinsicBounds(R.drawable.custom_undo, 0, 0, 0);
}
customBar.show();

Snackbar vs Toast : 어느 것을 사용해야합니까?

토스트는 일반적으로 (또는 발생하지 않은) 일부 작업과 관련하여 사용자에게 정보를 표시하려는 경우에 사용되며이 작업은 사용자가 다른 작업을 수행 할 필요가 없습니다. 메시지가 전송 된 경우와 같습니다 (예 :

Toast.makeText(this, "Message Sent!", Toast.LENGTH_SHORT).show();

Snackbars는 정보를 표시하는데도 사용됩니다. 그러나 이번에는 사용자에게 조치를 취할 기회를 줄 수 있습니다. 예를 들어, 사용자가 실수로 사진을 삭제하고 다시 가져 오려고한다고 가정 해 봅시다. Snackbar에 "실행 취소"작업을 제공 할 수 있습니다. 이렇게 :

Snackbar.make(getCurrentFocus(), "Picture Deleted", Snackbar.LENGTH_SHORT)
        .setAction("Undo", new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //Return his picture
            }
        })
        .show();

결론 : 토스트는 사용자 상호 작용이 필요하지 않을 때 사용됩니다. Snackbars는 사용자가 다른 작업을 수행하거나 이전 작업을 취소 할 수있게하는 데 사용됩니다.

맞춤 스낵바 (보기 필요 없음)

Snackbar에 대한 필요성을 고려하지 않고 스낵바를 만들면 모든 레이아웃이 android.R.id.content에서 android로 생성됩니다.

public class CustomSnackBar {

    public static final int STATE_ERROR = 0;
    public static final int STATE_WARNING = 1;
    public static final int STATE_SUCCESS = 2;
    public static final int VIEW_PARENT = android.R.id.content;

    public CustomSnackBar(View view, String message, int actionType) {
        super();

        Snackbar snackbar = Snackbar.make(view, message, Snackbar.LENGTH_LONG);
        View sbView = snackbar.getView();
        TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text);
        textView.setTextColor(Color.parseColor("#ffffff"));
        textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
        textView.setGravity(View.TEXT_ALIGNMENT_CENTER);
        textView.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);

        switch (actionType) {
            case STATE_ERROR:
                snackbar.getView().setBackgroundColor(Color.parseColor("#F12B2B"));
                break;
            case STATE_WARNING:
                snackbar.getView().setBackgroundColor(Color.parseColor("#000000"));
                break;
            case STATE_SUCCESS:
                snackbar.getView().setBackgroundColor(Color.parseColor("#7ED321"));
                break;
        }
        snackbar.show();
    }
}

통화 클래스 용

새로운 CustomSnackBar (findViewById (CustomSnackBar.VIEW_PARENT), "message", CustomSnackBar.STATE_ERROR);



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow