2016-08-02 4 views
2

メッセージが大きすぎるため、2行後に切り捨てられているため、プロジェクトでデザインサポートライブラリのスナックバーを使用してメッセージを表示しています。次のコードを使用してsnackbar textviewによってmaxlinesを変更しようとしたとき、nullを返します。 Snackbarは私のプロジェクトで持っているライブラリモジュールです。Snackbar textviewはライブラリモジュール内でnullを返します

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

答えて

1

私は同じ問題がありました。 私はたくさんのutilsを持つmaven repoを持っています。 「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がある場合は、うーん...幸いです。これを修正し、あなたが望むようにします。

関連する問題