使用可下载字体作为自定义 Snackbar 字体
Use downloadable font as custom Snackbar typeface
正在使用支持库测试 Android 可下载字体的新功能。
它在我的文本视图和自定义对话框的整个应用程序中正常工作,但是当尝试将它用作 Snackbar 中的自定义字体时,它使应用程序崩溃了。我在对话框 OnClick 中的用法是这样的。
Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content), R.string.snackbar_confirm_removal_or_wait, Snackbar.LENGTH_LONG)
.setAction(R.string.snackbar_delete, new View.OnClickListener() {
@Override
public void onClick(View view) {
String quote = quotes.get(position).quote;
deleteEntry(quote);
quotes.remove(position);
adapter.notifyDataSetChanged();
Snackbar.make(findViewById(android.R.id.content), R.string.snackbar_deleted, Snackbar.LENGTH_SHORT)
.setDuration(1000)
.show();
}
})
.setDuration(8500)
.setActionTextColor(ContextCompat.getColor(QuoteActivity2.this, R.color.snackbar_varning_red));
TextView textView = (mSnackbar.getView()).findViewById(android.support.design.R.id.snackbar_text);
Typeface typeface = ResourcesCompat.getFont(QuoteActivity2.this, R.font.roboto_slab);
textView.setTypeface(typeface);
snackbar.show();
我的 logcat 给出了特定崩溃的以下输出
E/AndroidRuntime(24199): java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.support.design.widget.BaseTransientBottomBar.getView()' on a null object reference
关于如何解决它或使用可下载字体作为自定义字体与 snackbars 的任何想法?
您似乎正在访问此行中的字段 (mSnackbar):
TextView textView = (mSnackbar.getView()).findViewById(android.support.design.R.id.snackbar_text);
但是您只是将 Snackbar 分配给局部变量。可能就是这个问题?
正在使用支持库测试 Android 可下载字体的新功能。
它在我的文本视图和自定义对话框的整个应用程序中正常工作,但是当尝试将它用作 Snackbar 中的自定义字体时,它使应用程序崩溃了。我在对话框 OnClick 中的用法是这样的。
Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content), R.string.snackbar_confirm_removal_or_wait, Snackbar.LENGTH_LONG)
.setAction(R.string.snackbar_delete, new View.OnClickListener() {
@Override
public void onClick(View view) {
String quote = quotes.get(position).quote;
deleteEntry(quote);
quotes.remove(position);
adapter.notifyDataSetChanged();
Snackbar.make(findViewById(android.R.id.content), R.string.snackbar_deleted, Snackbar.LENGTH_SHORT)
.setDuration(1000)
.show();
}
})
.setDuration(8500)
.setActionTextColor(ContextCompat.getColor(QuoteActivity2.this, R.color.snackbar_varning_red));
TextView textView = (mSnackbar.getView()).findViewById(android.support.design.R.id.snackbar_text);
Typeface typeface = ResourcesCompat.getFont(QuoteActivity2.this, R.font.roboto_slab);
textView.setTypeface(typeface);
snackbar.show();
我的 logcat 给出了特定崩溃的以下输出
E/AndroidRuntime(24199): java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.support.design.widget.BaseTransientBottomBar.getView()' on a null object reference
关于如何解决它或使用可下载字体作为自定义字体与 snackbars 的任何想法?
您似乎正在访问此行中的字段 (mSnackbar):
TextView textView = (mSnackbar.getView()).findViewById(android.support.design.R.id.snackbar_text);
但是您只是将 Snackbar 分配给局部变量。可能就是这个问题?