将快餐栏放在Utility类中

时间:2016-06-03 10:08:21

标签: android android-snackbar

我使用此方法可以显示使用应用中使用的颜色的snackbar消息。出于这个原因,我想让方法静态并将其放在最后一个实用程序类中,所以我可以在整个地方使用它,并且不会每次都重复它。

然而,这有一个问题,即$tr = $table.getElementById('id2') $tr.getElementsByTagName('a') <div>等需要一个“活在”的活动,也不能是静态的。

任何优雅的方式来做到这一点?我一直在寻找其他帖子,但没有一个确实反映了这个问题。 谢谢!

$table.getElementsByTagName('div')

5 个答案:

答案 0 :(得分:2)

将此方法放在您想要显示小吃栏的位置,并在该类中传递相应的参数

protected void displaySnackbar (View view,String s)
    {
        Snackbar snack = Snackbar.make(view, s, Snackbar.LENGTH_LONG);
        View sbview = snack.getView();
        sbview.setBackgroundColor(ContextCompat.getColor(this, R.color.colorAccent));
        TextView textView = (TextView) sbview.findViewById(android.support.design.R.id.snackbar_text);
        textView.setTextColor(getResources().getColor(R.color.primary_light));
        snack.show();
    }

答案 1 :(得分:1)

您可以将视图和上下文作为方法的参数传递

    protected void displaySnackbar (Context context, View view, String s)
 {
    Snackbar snack = Snackbar.make(view, s, Snackbar.LENGTH_LONG);
    View sbview = snack.getView();
    sbview.setBackgroundColor(context.getColor(this, R.color.colorAccent));
    TextView textView = (TextView) sbview.findViewById(android.support.design.R.id.snackbar_text);
    textView.setTextColor(context.getResources().getColor(R.color.primary_light));
    snack.show();
}

答案 2 :(得分:1)

您可以使用此代码gist

在代码链接关闭时发布代码

public class UtilSnackbar {
    /************************************ ShowSnackbar with message, KeepItDisplayedOnScreen for few seconds*****************************/
    public static void showSnakbarTypeOne(View rootView, String mMessage) {
        Snackbar.make(rootView, mMessage, Snackbar.LENGTH_LONG)
                .setAction("Action", null)
                .show();
    }

    /************************************ ShowSnackbar with message, KeepItDisplayedOnScreen*****************************/
    public static void showSnakbarTypeTwo(View rootView, String mMessage) {

        Snackbar.make(rootView, mMessage, Snackbar.LENGTH_LONG)
                .make(rootView, mMessage, Snackbar.LENGTH_INDEFINITE)
                .setAction("Action", null)
                .show();

    }

    /************************************ ShowSnackbar without message, KeepItDisplayedOnScreen, OnClickOfOk restrat the activity*****************************/
    public static void showSnakbarTypeThree(View rootView, final Activity activity) {

        Snackbar
                .make(rootView, "NoInternetConnectivity", Snackbar.LENGTH_INDEFINITE)
                .setAction("TryAgain", new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        Intent intent = activity.getIntent();
                        activity.finish();
                        activity.startActivity(intent);
                    }
                })
                .setActionTextColor(Color.CYAN)
                .setCallback(new Snackbar.Callback() {
                    @Override
                    public void onDismissed(Snackbar snackbar, int event) {
                        super.onDismissed(snackbar, event);
                    }

                    @Override
                    public void onShown(Snackbar snackbar) {
                        super.onShown(snackbar);
                    }
                })
                .show();

    }

    /************************************ ShowSnackbar with message, KeepItDisplayedOnScreen, OnClickOfOk restrat the activity*****************************/
    public static void showSnakbarTypeFour(View rootView, final Activity activity, String mMessage) {

        Snackbar
                .make(rootView, mMessage, Snackbar.LENGTH_INDEFINITE)
                .setAction("TryAgain", new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        Intent intent = activity.getIntent();
                        activity.finish();
                        activity.startActivity(intent);
                    }
                })
                .setActionTextColor(Color.CYAN)
                .setCallback(new Snackbar.Callback() {
                    @Override
                    public void onDismissed(Snackbar snackbar, int event) {
                        super.onDismissed(snackbar, event);
                    }

                    @Override
                    public void onShown(Snackbar snackbar) {
                        super.onShown(snackbar);
                    }
                })
                .show();

    }
}

答案 3 :(得分:0)

您可以将Context和View作为参数传递

protected static void displaySnackbar (View view, Context context,String s) {
 Snackbar snack = Snackbar.make(view.findViewById(android.R.id.content), s, Snackbar.LENGTH_LONG);
    View sbview = snack.getView();
    sbview.setBackgroundColor(ContextCompat.getColor(this, R.color.colorAccent));
    TextView textView = (TextView) sbview.findViewById(android.support.design.R.id.snackbar_text);
    textView.setTextColor(context.getResources().getColor(R.color.primary_light));
    snack.show();
}

答案 4 :(得分:0)

感谢大家的灵感......此代码现在可以使用:

    protected static void sacaSnackbar (Context context, View view, String s)
{
    Snackbar snack = Snackbar.make(view, s, Snackbar.LENGTH_LONG);
    View sbview = snack.getView();
    sbview.setBackgroundColor(ContextCompat.getColor(contexto, R.color.colorAccent));
    TextView textView = (TextView) sbview.findViewById(android.support.design.R.id.snackbar_text);
    textView.setTextColor(ContextCompat.getColor(context, R.color.primary_light));
    snack.show();
}