2

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

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

1 回答 1

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,那么...祝您好运。修改它并按照您的意愿进行操作。

于 2016-11-08T20:28:33.030 回答