【问题标题】:Custom font on NavigationDrawerNavigationDrawer 上的自定义字体
【发布时间】:2015-10-26 15:46:46
【问题描述】:

我正在尝试更改我的导航抽屉上的字体,我正在使用带有适配器的自定义 xml 文件,因此我可以成功更改 ListView 中每个元素的颜色和背景,但是我无法更改字体,AndroidStudio 给了我一个 null 对象引用 所以,我认为它没有找到 textview。我的代码:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    mDrawerListView = (ListView) inflater.inflate(
            R.layout.fragment_navigation_drawer, container, false);
    TextView lbl = (TextView) mDrawerListView.findViewById(R.id.section_label);
    Typeface tf = Typeface.createFromAsset(getActivity().getAssets(),"fonts/Jaapokki-Regular.otf");
    lbl.setTypeface(tf);
    mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            selectItem(position);
        }
    });
    mDrawerListView.setAdapter(new ArrayAdapter<String>(
            getActionBar().getThemedContext(),
            R.layout.fragment_main,
            R.id.section_label,
            new String[]{
                    getString(R.string.title_section1),
                    getString(R.string.title_section2),
                    getString(R.string.title_section3),
                    "Acerca de...",
            }));

    mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
    return mDrawerListView;
}

非常感谢!

【问题讨论】:

  • 我怀疑 android 不支持 OpenType 字体。尝试改用 TrueType 字体。 stackoverflow.com/questions/1426244/…。或者尝试使用自定义适配器并从适配器的 getview() 方法更改字体。
  • 是的,我正在另一个活动中使用它

标签: android fonts navigation-drawer typeface drawer


【解决方案1】:

试试这个

mDrawerListView.setAdapter(new ArrayAdapter<String>(getActionBar().getThemedContext(), R.layout.fragment_main,R.id.section_label, new String[]{
                getString(R.string.title_section1),
                getString(R.string.title_section2),
                getString(R.string.title_section3),
                "Acerca de...",
                }) {
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = super.getView(position, convertView, parent);          
        TextView tv=(TextView)v.findViewById(R.id.section_label);
        tv.setTypeface(tf);             
        return v;
    }
});

【讨论】:

  • 我不知道把这个方法放在哪里,我会找出并告诉你一些事情,谢谢。
  • 你只需要用我的代码替换你的setadapter代码,
  • 是的!完美运行!谢谢!
猜你喜欢
  • 2011-08-07
  • 2022-11-23
  • 1970-01-01
  • 2012-04-25
  • 2016-07-10
  • 2015-11-23
  • 1970-01-01
  • 1970-01-01
  • 2014-01-10
相关资源
最近更新 更多