【问题标题】:Snackbar textview returns null in library moduleSnackbar textview 在库模块中返回 null
【发布时间】:2016-12-07 16:07:36
【问题描述】:

我在我的项目中使用设计支持库的快餐栏来显示一条消息,因为消息很大,它在 2 行后被截断。当我尝试使用以下代码通过快餐栏 textview 更改 maxlines 时,它返回 null。 Snackbar 在我的项目中的一个库模块中。

View snackbarView = snackbar.getView();
TextView textView = (TextView)snackbarView.findViewById(android.support.design.R.id.snackbar_text);
textView.setMaxLines(5); 

【问题讨论】:

    标签: android textview snackbar


    【解决方案1】:

    好的,我遇到了同样的问题。 我有一个 Maven 回购,有很多实用程序。 还有一种方法“getConfiguredSnackBar”将小吃栏文本的颜色更改为白色,因为某些主题会将其更改为黑色,使其难以阅读。

    使用您的方法可以正常工作(如果它在同一个模块中)。但是在库中,findViewById(android.support.design.R.id.snackbar_text) 为空。

    我的丑陋但有效的方法:

        @Nullable
    private static TextView findTextViewInSnackbar(Snackbar snackbar){
        ViewGroup snackView = ((ViewGroup) snackbar.getView());
        for (int i = 0; i < snackView.getChildCount(); i++) {
            View child = snackView.getChildAt(i);
            if (child instanceof TextView) {
                return ((TextView) child);
            }
        }
        return null;
    }
    

    它工作得很好。如果由于某种原因,您有多个 TextView,那么...祝您好运。修改它并按照你的意愿去做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-14
      • 2018-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多