【问题标题】:Android Snackbar setAction displaying button with text instead just textAndroid Snackbar setAction 显示带有文本的按钮而不是文本
【发布时间】:2018-01-26 23:10:47
【问题描述】:

我需要创建一个带有文本的 Snackbar,当我单击它时,Snackbar 将关闭。但是,操作按钮不是文本,而是呈现为带有我的操作文本的按钮。我从来没有在任何地方看到过这样的问题。 android.support.design v7 版本:25.3.1。最低 API 版本为 16。

Snackbar snackbar = Snackbar.make(v_osnov, Html.fromHtml("
<fontcolor=\"#ffffff\">Tag deleted</font>") , Snackbar.LENGTH_INDEFINITE); 
    
snackbar.setDuration(5000);

snackbar.setAction("Dismiss", new View.OnClickListener() {
    @Override
    public void onClick(View view) {

    }
  });
snackbar.show();
    

这是我得到的,而不仅仅是操作文本:

【问题讨论】:

  • 不得不使用 HTML 将文本变成白色已经是一个不好的迹象。那应该是自动的-深色背景上的白色文本。 /// 什么是v_osnov?你扩展AppCompatActivity了吗?您使用 AppCompat 或 Design 主题吗?您是否曾在任何时候使用getApplicationContext() 来增加视图?
  • 我使用 HTML 是因为默认文本颜色是深色,而不是白色。 v_osnov 是一个 xml 资源文件,它是 MainActivity 的一部分。此外,实现 Snackbar 的类不是 Activity。我正在使用 AppCompat 主题
  • 我的观点是默认情况下文本应该是白色的。您不必将其设置为白色,这不是解决方案。删除 HTML。该按钮看起来像 Android 2 主题。它不应该。整个 Snackbar 使用了糟糕的主题。 ///请在您的问题代码中添加您如何获得v_osnov以及您从何处获得上下文。
  • 查看 v_osnov=cma.getLayoutInflater().inflate(R.layout.edt_osnov,null); - 其中“cma”是 MainActivity 的对象
  • 让我们调试一下。如果你改为写Snackbar.make(activity.findViewById(android.R.id.content), "Tag deleted", Snackbar.LENGTH_INDEFINITE),它是否可以正常工作?

标签: java android android-snackbar


【解决方案1】:

与其尝试从 HTML 中获取颜色,不如使用下面的方法来更改操作的文本颜色

Snackbar snackbar = Snackbar.make(...)
    .setDuration(...)
    .setAction(...)
    //Note the method call beneath
    .setActionTextColor(R.color.white);

这样,您将获得所需的文本而没有周围的颜色区域

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-03
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    • 2011-10-12
    • 1970-01-01
    相关资源
    最近更新 更多