Snackbar textview在库模块中返回null

时间:2016-08-02 10:36:29

标签: android textview snackbar

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

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

1 个答案:

答案 0 :(得分:1)

好的,我有同样的问题。 我有一个maven repo,有很多的utils。 并且一种方法“getConfiguredSnackBar”将快餐栏文本的颜色更改为白色,因为某些主题可以将其更改为黑色,这使得难以阅读。

使用你的aproach(如果它在同一个模块中)可以正常工作。但是当在库中时,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,那么......祝你好运。修改此项并按照您的意愿执行。