android在listview中设置不同的字体/颜色

android在listview中设置不同的字体/颜色,android,listview,fonts,colors,Android,Listview,Fonts,Colors,我在Android中创建了一个包含3行的listview。如果我想在行上设置不同的字体/颜色,如何实现?到目前为止,我尝试过不同的事情,但没有成功。这是我最近的一次尝试,我尝试将getComment()设置为斜体,但老实说,我不知道我在做什么:D.请帮助 public String toString() { return this.getAlias() + " " + this.dateFormat.format(this.getDate()) + "\n" + (Html.fr

我在Android中创建了一个包含3行的listview。如果我想在行上设置不同的字体/颜色,如何实现?到目前为止,我尝试过不同的事情,但没有成功。这是我最近的一次尝试,我尝试将getComment()设置为斜体,但老实说,我不知道我在做什么:D.请帮助

public String toString()
{
return this.getAlias() + " " + this.dateFormat.format(this.getDate()) + "\n" +         (Html.fromHtml("<i>" + this.getComment() + "</i>" + "<br />"));  
}
公共字符串toString()
{
返回this.getAlias()+“”+this.dateFormat.format(this.getDate())+“\n”+(Html.fromHtml(“+this.getComment()+”“+”
”); }
我假设您已经在xml布局文件中定义了行。您可以使用一些简单的参数更改TextView中文本的颜色/样式:

<TextView
  ...
  android:textColor="#FFFF0000"
  android:textStyle="italic"
/>

您想要做的是拥有一个包含文本视图的列表视图,当您设置文本视图文本时,您是否正确设置了字符序列?使用CharSequence可以添加跨距,您可以使用粗体、下划线、斜体、彩色等。我很确定,当您将它放在列表视图中时,它将保持其样式,没有理由不这样做,而且我认为当您使用字符串时,样式会消失,因此您可能需要使用CharSequence


使用span,您还可以动态更改外观,而无需使用硬编码XML,您可以从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;
    }
}
class SummaryListAdapter扩展了ArrayAdapter{
静态最终int mViewResourceId=R.layout.dynformlist\u项;
最终语境;
公共SummaryListAdapter(上下文上下文,DynformSummaryList项){
super(上下文、mViewResourceId、项);
mContext=上下文;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图=转换视图;
如果(视图==null){
LayoutFlater充气机=LayoutFlater.from(mContext);
视图=充气机。充气(mViewResourceId,父项,false);
}
DynformSummary=getItem(位置);
如果(摘要!=null){
TextView名称视图=(TextView)视图
.findviewbyd(R.id.dynformSummary_name);
TextView createdOnView=(TextView)视图
.findviewbyd(R.id.dynformSummary_createdOn);
TextView项目摘要视图=(TextView)视图
.findviewbyd(R.id.dynformSummary\u itemsummmary);
java.text.DateFormat df=DateFormat.getDateFormat(mContext);
String itemSummary=summary.getItemSummary();
if(itemSummary==null | | itemSummary.length()==0){
itemSummary=mContext
.getString(R.string.placeholder_为空);
}
nameView.setText(summary.getName());
createdOnView.setText(df.format(summary.getCreatedOn());
itemSummaryView.setText(itemSummary);
}
返回视图;
}
}

在您的情况下,您可以为每种不同的字体或颜色创建单独的布局xml,也可以在运行时在getView方法中编辑字体/颜色。

尝试先阅读此文档。您可以尝试创建自定义ArrayAdapter或BaseApter并将视图膨胀为行。您的问题解决了吗?如果其中一个答案对您有所帮助,请将其标记为已接受:)“我希望在行上设置不同的字体/颜色”-而不是为您可以创建的每一行设置相同的颜色和样式,并将其设置为ArrayAdapter(如Roy在其答案中所建议的)。在getView()方法中,可以通过调用myTextView.setColor(..)/myTextView.setTypeface(..)来设置颜色/样式。这些值可以从您的物品、位置或任何您喜欢的地方获得。