2

メッセージが大きいため、プロジェクトでデザイン サポート ライブラリのスナックバーを使用してメッセージを表示しています。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); 
4

1 に答える 1

1

わかりました、私は同じ問題を抱えていました。私は多くのユーティリティを備えたMavenレポを持っています。また、1 つのメソッド「getConfiguredSnackBar」は、スナックバーのテキストの色を白に変更します。これは、テーマによっては黒に変更されて読みにくくなる可能性があるためです。

アプローチを使用しても問題なく動作します(同じモジュール内にある場合)。しかし、図書館では、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 がある場合は、まあ...頑張ってください。これを変更して、必要に応じて実行してください。

于 2016-11-08T20:28:33.030 に答える