【问题标题】: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,那么...祝您好运。修改它并按照你的意愿去做。