我使用此方法可以显示使用应用中使用的颜色的snackbar消息。出于这个原因,我想让方法静态并将其放在最后一个实用程序类中,所以我可以在整个地方使用它,并且不会每次都重复它。
然而,这有一个问题,即$tr = $table.getElementById('id2')
$tr.getElementsByTagName('a')
和<div>
等需要一个“活在”的活动,也不能是静态的。
任何优雅的方式来做到这一点?我一直在寻找其他帖子,但没有一个确实反映了这个问题。 谢谢!
$table.getElementsByTagName('div')
答案 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();
}