当我的令牌变得无效时,我想显示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();
当我点击snackBar的“刷新”操作按钮时,我希望现有的snackBar文本更改为“Refreshing”并显示要执行的操作,因此这是我在onClickListener中编写的代码。
但是,当我点击“刷新”操作按钮时,快餐栏就会自动解散。
反正有没有修改现有小吃店的文字和动作?
最好显示带有“刷新”消息的新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();
要仅更改文本,请获取快餐栏的文本视图:
TextView tvSnackbarText = snackbar.getView().findViewById(android.support.design.R.id.snackbar_text);
tvSnackbarText.setText("Any text");
你提到“......和要显示的动作”,所以这些不应该是必要的:
outerSnackBar.setAction("", null);
outerSnackBar.show();
其他有用的方法在这里提到How to set support library snackbar text color to something other than 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);