2016-08-02 19 views
2

我在我的項目中使用設計支持庫的快餐欄來顯示消息,因爲消息很大,它在2行之後被截斷。當我嘗試使用以下代碼通過小吃棒textview更改最大線數時,它將返回null。小吃店在圖書館模塊中,我在我的項目中。Snackbar textview在庫模塊中返回null

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

回答

1

好吧,我有同樣的問題。 我有一個maven回購,與實用程序的LOTS。 另一種方法「getConfiguredSnackBar」將快餐欄文本的顏色更改爲白色,因爲某些主題可將其更改爲黑色,使其難以閱讀。

它使用你的aproach(如果它在同一模塊中)可以正常工作。但是,當在庫中時,findViewById(android.support.design.R.id.snackbar_text)爲null。

我的醜,但工作,做法:

@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,那麼...祝您好運。修改它並按照你的意願去做。