更改现有snackBar的文本

问题描述 投票:3回答:3

当我的令牌变得无效时,我想显示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中编写的代码。

但是,当我点击“刷新”操作按钮时,快餐栏就会自动解散。

反正有没有修改现有小吃店的文字和动作?

android android-snackbar
3个回答
2
投票

最好显示带有“刷新”消息的新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(); 

2
投票

要仅更改文本,请获取快餐栏的文本视图:

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?


0
投票

我曾经使用以下代码获取视图并设置文本:

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); 
© www.soinside.com 2019 - 2024. All rights reserved.