我有ExpandableListView的听众为群组折叠和展开:
// There is a text view on group layout, no problem there.
@Override
public void onGroupCollapse(int groupPosition) {
// this callback is triggered, however, once the textView is BOLD by onGroupExpanded, the textView is not set back to normal, seems this line of code does nothing...WHY?
textView.setTypeface(textView.getTypeface(), Typeface.NORMAL);
}
@Override
public void onGroupExpand(int groupPosition) {
// it works fine
textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
}
正如您在上面所看到的,我在群组布局中有textView
,当群组展开时,我粗体 textView
,如果已折叠,我会尝试设置它Typeface.NORMAL
返回 unbold 。
两个回调都被正确触发,但是,textView
BOLD 被onGroupExpanded(...)
回调后,textView
不是之后触发onGroupCollapse(...)
时重新设置为NORMAL。似乎onGroupCollapsed(...)
中的代码行什么都不做......为什么?
(同样,onGroupCollapse(...)
被触发。没问题!)
答案 0 :(得分:5)
如果您在此TextView上使用android:fontFamily
,那么我很确定
textView.setTypeface(null, Typeface.NORMAL);
将更改为默认字体。另一种方法是:
textView.setTypeface(Typeface.create(textView.getTypeface(), Typeface.NORMAL));
最初的问题是,如果样式为NORMAL,则具有样式的TextView的setTypeface
会跳过某些内容。我已经在一个版本上进行了测试,并且可以正常工作。
答案 1 :(得分:4)
请改用:
textView.setTypeface(null, Typeface.NORMAL);
你需要把null放在其他字体上(在你的情况下是Bold)。我如何理解它一个文本视图可以有多种类型的面,例如斜体+粗体等,第一个参数是指示是否要保留这些。所以基本上你以前的代码保持BOLD并添加了NORMAL,并且BOLD赢了;-)
另请参阅此处的相关答案和评论https://stackoverflow.com/a/6200841/2399024