在Detail片段上更改列表片段的字体

Hem*_*h07 4 android android-layout android-fonts android-fragments android-listfragment

我正在尝试使用android 4.0实现片段.我在DummyContent.java文件中添加了列表片段中的三个项目

static {
    // Add 3 sample items.
    addItem(new DummyItem("1", "Videos"));
    addItem(new DummyItem("2", "Images"));
    addItem(new DummyItem("3", "Story"));
}
Run Code Online (Sandbox Code Playgroud)

这些视频,图像,故事出现在片段左侧,每个项目的点击显示右侧细节片段的详细信息.

我想更改这些列表视图的字体,但问题是列表片段使用系统textview如下所示

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // TODO: replace with a real list adapter.
    setListAdapter(new ArrayAdapter<DummyContent.DummyItem>(getActivity(),
            android.R.layout.simple_list_item_activated_1,
            android.R.id.text1, DummyContent.ITEMS));
}
Run Code Online (Sandbox Code Playgroud)

哪个不允许我应用字体 android.R.id.text1

请帮我

Jas*_*son 8

一种方法是扩展ArrayAdapter和覆盖getView方法以获得TextView:

public class MyArrayAdapter<T> extends ArrayAdapter<T> {

    public MyArrayAdapter(Context context, List<T> items) {

        super(context, android.R.layout.simple_list_item_activated_1, android.R.id.text1, items);
    }

    public MyArrayAdapter(Context context, T[] items) {

        super(context, android.R.layout.simple_list_item_activated_1, android.R.id.text1, items);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        View view = super.getView(position, convertView, parent);
        TextView textView = (TextView) view.findViewById(android.R.id.text1);
        textView.setTypeface(Typeface.createFromAsset(getContext().getAssets(), "font/segoeuil.tff"));

        return view;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你会像这样设置你的适配器:

setListAdapter(new MyArrayAdapter<DummyContent.DummyItem>(getActivity(), DummyContent.ITEMS);
Run Code Online (Sandbox Code Playgroud)