怎样获得android上的字体列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样获得android上的字体列表相关的知识,希望对你有一定的参考价值。

我想获得列表,然后在listView中展示,这样可以选择组件上的字体样式。

参考技术A 怎样遍历自定义的字体自定义的字体放在assets/fonts/下 参考技术B 遍历system/fonts/目录下的字体文件,然后将其路径放入到List中,然后显示出来不就可以了吗?

列表视图的子视图

【中文标题】列表视图的子视图【英文标题】:Child view of list view 【发布时间】:2015-05-13 06:19:36 【问题描述】:

我有包含多个 textview 和 imageview 的自定义列表视图。我想获得那个视图。我怎样才能得到它。我的代码如下。我想在整个 aap 上应用字体样式。它对所有人都很好查看 bt 不在列表视图的适配器中。请建议我。

public class BaseFragment extends Fragment 
private Typeface typeace;

@Override
public void onCreate(Bundle savedInstanceState) 
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    typeace = Typeface.createFromAsset(getActivity().getAssets(), getResources().getString(R.string.font_name_fragment));
    //FlurryAgent.init(getActivity(), getResources().getString(R.string.flurry_key));


@Override
public void onActivityCreated(Bundle savedInstanceState) 
    // TODO Auto-generated method stub
    super.onActivityCreated(savedInstanceState);


@Override
public void onViewCreated(View view, Bundle savedInstanceState) 
    // TODO Auto-generated method stub
    super.onViewCreated(view, savedInstanceState);
    overrideFonts(getActivity(), view);


private void overrideFonts(final Context context, final View v) 
    try 
        if (v instanceof ViewGroup) 
            ViewGroup vg = (ViewGroup) v;
            for (int i = 0; i < vg.getChildCount(); i++) 
                View child = vg.getChildAt(i);
                overrideFonts(context, child);
            
         else if (v instanceof TextView) 
            ((TextView) v).setTypeface(typeace);

         else if (v instanceof EditText) 
            ((EditText) v).setTypeface(typeace);
        
     catch (Exception e) 
        e.printStackTrace();
    

【问题讨论】:

我想在窗口的每个视图中应用字体样式,但它在列表中的适配器中不起作用。 欢迎来到 Stack Overflow!请阅读how to ask 如果你有答案建议在这里。 maybe你能展示你完整的课程吗? 【参考方案1】:

你可以如下获取ListView中的列表项,并添加自己的字体

listView.setOnItemClickListener(new OnItemClickListener() 
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) 
                TextView txtView = (TextView) view.findViewById(R.id.txt_view);
                txtView.setTypeface(typeace);
            
);

或者在适配器中也作为

@Override
public View getView(int position, View convertView, ViewGroup parent) 
    ViewHolder holder;
    View view = null;
    if (view == null) 
        view = layoutInflater.inflate(R.layout.child_layout, parent, false);

        holder = new ViewHolder();

        holder.txt = (TextView) view.findViewById(R.id.txt_view);
        holder.txt.setTypeFace(typeface);
        view.setTag(holder);
     else 
        holder = (ViewHolder) view.getTag();
    
    holder.txt.setText("Text");
    return view;

【讨论】:

我有很多列表视图,我无法通过这个在每个 n evry textview 上修复它 尝试编写一个接受参数 View 的 Fonts 类,将 TextView 发送到该类并在 Fonts 类中设置字体

以上是关于怎样获得android上的字体列表的主要内容,如果未能解决你的问题,请参考以下文章

Android 上设置的默认字体

怎样改动android系统字体大小

如何获得Android手机的软件安装列表

Android中怎样设置Spinner显示的字体颜色

Android中怎样设置Spinner显示的字体颜色

Android Studio升级到0.8.1后怎样设置字体大小?