【发布时间】:2018-01-06 14:14:59
【问题描述】:
我在我创建的资产文件夹中放置了一个字体,并在我的 MainActivity 中实现了以下代码:
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
// Code to change Welcome text to 'BankGothic Bold' font
Typeface myTypeface = Typeface.createFromAsset(getAssets(), "BankGothic Bold.ttf");
TextView myTextview = (TextView)findViewById(R.id.WelcomeTextView);
myTextview.setTypeface(myTypeface);
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
// Code to display Home Fragment on App Launch Page
HomeFragment homeFragment = new HomeFragment();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(
R.id.relativelayout_for_fragment,
homeFragment,
homeFragment.getTag()
).commit();
}
我也在 XML 文件中创建了 ID,所以没问题。
如果我包含此代码,我的应用会在启动时崩溃:
// Code to change Welcome text to 'BankGothic Bold' font
Typeface myTypeface = Typeface.createFromAsset(getAssets(), "BankGothic Bold.ttf");
TextView myTextview = (TextView)findViewById(R.id.WelcomeTextView);
myTextview.setTypeface(myTypeface);
如果我删除它,我的应用程序可以正常使用标准字体。有谁知道为什么?
感谢您的宝贵时间。
【问题讨论】:
-
将字体文件的名称更改为不带空格且全部小写的名称,然后在代码中使用此名称。
-
尝试使用“bankgothic.ttf”,但遗憾的是没有用。不过感谢您的建议。
-
您可以在运行应用程序并崩溃时发布
logcat错误吗? -
啊,是的,我没想到看那个。请给我一点时间
-
java.lang.NullPointerException: 尝试在空对象引用上调用虚拟方法 'void android.widget.TextView.setTypeface(android.graphics.Typeface)'
标签: java android android-studio fonts