我在Android中创建了一个包含3行的列表视图。如果我想在行上设置不同的字体/颜色,我该如何实现?到目前为止,我已经尝试了不同的事情而没有成功。这是我最近的尝试,我尝试将getComment()设置为斜体,但说实话,我不知道我在做什么:D。请帮忙!
public String toString()
{
return this.getAlias() + " " + this.dateFormat.format(this.getDate()) + "\n" + (Html.fromHtml("<i>" + this.getComment() + "</i>" + "<br />"));
}
答案 0 :(得分:1)
您可以从ListViewAdapter执行此操作。在我的项目中,我创建了一个扩展ArrayAdapter的新类:
class SummaryListAdapter extends ArrayAdapter<DynformSummary> {
static final int mViewResourceId = R.layout.dynformlist_item;
final Context mContext;
public SummaryListAdapter(Context context, DynformSummaryList items) {
super(context, mViewResourceId, items);
mContext = context;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
LayoutInflater inflater = LayoutInflater.from(mContext);
view = inflater.inflate(mViewResourceId, parent, false);
}
DynformSummary summary = getItem(position);
if (summary != null) {
TextView nameView = (TextView) view
.findViewById(R.id.dynformSummary_name);
TextView createdOnView = (TextView) view
.findViewById(R.id.dynformSummary_createdOn);
TextView itemSummaryView = (TextView) view
.findViewById(R.id.dynformSummary_itemSummary);
java.text.DateFormat df = DateFormat.getDateFormat(mContext);
String itemSummary = summary.getItemSummary();
if (itemSummary == null || itemSummary.length() == 0) {
itemSummary = mContext
.getString(R.string.placeholder_empty);
}
nameView.setText(summary.getName());
createdOnView.setText(df.format(summary.getCreatedOn()));
itemSummaryView.setText(itemSummary);
}
return view;
}
}
在您的情况下,您可以为每种不同的字体或颜色创建单独的布局xml,或者您可以在运行时使用getView方法编辑字体/颜色。
答案 1 :(得分:0)
我假设您已在xml布局文件中定义了行。您可以使用一些简单的参数更改TextView中文本的颜色/样式:
<TextView
...
android:textColor="#FFFF0000"
android:textStyle="italic"
/>
答案 2 :(得分:0)
您要做的是拥有一个包含文本视图的列表视图,当您设置文本视图文本时,您正在设置CharSequence吗?使用CharSequence你可以添加跨度,你可以使用粗体,下划线,斜体,彩色等。我很确定它会保持其风格,当你把它放在列表视图中,没有理由它不应该,我认为当你使用一个字符串时,样式就会消失,所以你可能想要使用CharSequence
http://developer.android.com/reference/android/text/Spannable.html
使用跨度,您还可以动态更改外观,而无需使用硬编码XML