我需要在字符串数组中加粗一些文本,其中每个项目都在ViewPager中使用。我正在使用getTextArray()
从xml文件中获取格式化文本,并且无法将其转换为String
以便能够在ViewPager中使用。
这是我最近尝试过的,但它删除了格式:
CharSequence[] arr = getResources().getTextArray(R.array.array);
String[] arrString = new String[arr.length];
int i=0;
for(CharSequence ch: arr){
arrString[i++] = ch.toString();
}
for (String s : arrString) {
mArrayList.add(s);
}
XML
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="array">
<item><b>bold text</b>|<i>italic text</i></item>
<item>Second Item</item>
<item>Thrid Item</item>
</string-array>
</resources>
相关的ViewPager
ViewPager mViewPager;
ArrayList<String> mArrayList = new ArrayList<String>();
mViewPager = (ViewPager) findViewById(R.id.pager);
MyAdapter mAdapter = new MyAdapter(context, mArrayList);
mViewPager.setAdapter(mAdapter);
我感谢任何建议,谢谢
答案 0 :(得分:3)
String
个对象不能包含嵌入式标记(即字体,颜色,样式)。当您使用此代码时:
for(CharSequence ch: arr){
arrString[i++] = ch.toString();
}
您丢失了所包含资源的标记信息。
您只需更改Adapter
即可接收ArrayList<CharSequence>
,并将这些值直接放入TextViews(或适配器当前放置的位置)。