我正在使用 Mariotti 的 CardsLib 来创建一个包含卡片的列表。我创建卡片(在 for 循环中),如下所示:
CustomCard aCard = new CustomCard(getActivity().getApplicationContext());
CardHeader aHeader = new CardHeader(getActivity().getApplicationContext());
aHeader.setTitle(item.getHeaderText());
aCard.addCardHeader(aHeader);
aCard.setSpannableMainTitle(true);
aCard.setmSsbTitle(CustomSpannableBuilderForHome.getSpannedText(item));
CardThumbnail thumbnail = new CardThumbnail(getActivity().getApplicationContext());
thumbnail.setDrawableResource(R.drawable.ic_launcher);
aCard.addCardThumbnail(thumbnail);
cards.add(0, aCard);
CustomCard 是一个扩展 Card 类的类。我创建了这个类,因为我需要分配一个 SpannableStringBuilder 实例,而不是简单的 String。这是自定义卡:
public class CustomCard extends Card {
protected boolean isSpannableMainTitle;
/**
* Main Title
*/
protected SpannableStringBuilder mSsbTitle;
public SpannableStringBuilder getmSsbTitle() {
return mSsbTitle;
}
public void setmSsbTitle(SpannableStringBuilder mSsbTitle) {
this.mSsbTitle = mSsbTitle;
}
public boolean isSpannableMainTitle() {
return isSpannableMainTitle;
}
public void setSpannableMainTitle(boolean isSpannableMainTitle) {
this.isSpannableMainTitle = isSpannableMainTitle;
}
public CustomCard(Context context) {
super(context);
}
@Override
public void setupInnerViewElements(ViewGroup parent, View view) {
//Add simple title to header
if (view != null) {
TextView mTitleView = (TextView) view.findViewById(R.id.card_main_inner_simple_title);
if (mTitleView != null)
{
mTitleView.setText(isSpannableMainTitle? mSsbTitle : mTitle);
if (isSpannableMainTitle) mTitleView.setMovementMethod(LinkMovementMethod.getInstance());
}
}
}
}
在使用 maps api V2 之前一切正常。今天,当文本不包含跨度时,卡片的标题不会出现。如果它确实有跨度,则仅显示跨度。还值得一提的是,要设置的标题始终是 SpannableStringBuilder 的一个实例。例如:
Text1 = 这是没有跨度的文本
Text2 = 这是一个(文本),带有(跨度)<--- 其中()表示跨度的存在。
这是输出:
卡 1:
图片+页眉+无文字
卡 2:
图片+标题+(文本)(跨度)
也就是说,第一张卡片没有文字,而后者只显示跨区文字(即这是一个与,所有这些都被忽略了)。
正如我所说,这种行为在我包含 Maps API V2 后就开始了。请帮忙!