[英]Changing the text of an existing snackBar
当我的令牌无效时,我想显示一个小吃店。 小吃店将有一个附加到“刷新”令牌的操作。
SnackBar outerSnackBar;
outerSnackBar = Snackbar.make(coordinatorLayout,
"Your request is unauthorized. Please refresh your token",
Snackbar.LENGTH_INDEFINITE).setAction("Refresh"), new View.OnClickListener() {
@Override
public void onClick(View v) {
outerSnackBar.setAction("", null);
outerSnackBar.setText("Refreshing");
outerSnackBar.show();
}
}).show();
当我单击小吃店的“刷新”操作按钮时,我希望现有小吃店的文本更改为“刷新”并显示该操作,因此这是我在 onClickListener 中编写的代码。
但是,当我单击“刷新”操作按钮时,小吃店会自行关闭。
无论如何要修改现有小吃店的文本和操作?
要仅更改文本,请获取小吃栏的文本视图:
TextView tvSnackbarText = snackbar.getView().findViewById(android.support.design.R.id.snackbar_text);
tvSnackbarText.setText("Any text");
您提到了“...以及要显示的操作”,因此这些应该不是必需的:
outerSnackBar.setAction("", null);
outerSnackBar.show();
这里提到了其他有用的方法如何将支持库小吃栏文本颜色设置为 android:textColor 以外的其他颜色?
我曾经使用以下代码获取视图并设置文本:
TextView snackBarText = snackbar.getView().findViewById(android.support.design.R.id.snackbar_text);
snackBarText.setText("Stackoverflow is cool!");
但现在使用AndroidX这是获取视图的正确方法:
TextView snackBarText = snackbar.getView().findViewById(com.google.android.material.R.id.snackbar_text);
最好显示带有“刷新”消息的新 SnackBar
SnackBar outerSnackBar = Snackbar.make(coordinatorLayout,
"Your request is unauthorized. Please refresh your token",
Snackbar.LENGTH_INDEFINITE).setAction("Refresh"), new View.OnClickListener() {
@Override
public void onClick(View v) {
Snackbar refreshingSnackBar = Snackbar
.make(coordinatorLayout, "Refreshing...",
Snackbar.LENGTH_SHORT);
refreshingSnackBar.show();
}
}).show();
Snackbar.setText
不需要手动搜索内部文本视图,超级hacky。
snackbar.setText("New Snackbar Message")
它似乎并没有像你提到的那样忽略 SnackBar
这是更改文本和颜色的示例解决方案。
Snackbar snack = Snakebar.make(parent, "first text", Snackbar.LENGTH_INDEFINITE);
//change text when snackbar is showing
snack.setText("new different text")
//change color when snackbar is showing
snack.getView().setBackgroundColor(ContextCompat.getColor(context, R.color.green);
注意,'green' 颜色必须在colors.xml文件中定义,例如:
<color name="green">#4CAF50</color>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.