0

我在 Android 中创建了一个包含 3 行的列表视图。如果我想在行上设置不同的字体/颜色,我该如何实现?到目前为止,我已经尝试了不同的东西,但没有任何成功。这是我最近的尝试,我尝试将 getComment() 设置为斜体,但老实说,我不知道我在做什么:D。请帮忙!

public String toString()
{
return this.getAlias() + " " + this.dateFormat.format(this.getDate()) + "\n" +         (Html.fromHtml("<i>" + this.getComment() + "</i>" + "<br />"));  
}
4

3 回答 3

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 方法中编辑字体/颜色。

于 2012-06-14T09:07:17.613 回答
0

我假设您已经在 xml 布局文件中定义了行。您可以使用一些简单的参数来更改 TextView 中文本的颜色/样式:

<TextView
  ...
  android:textColor="#FFFF0000"
  android:textStyle="italic"
/>
于 2012-06-14T09:04:51.127 回答
0

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

http://developer.android.com/reference/android/text/Spannable.html

使用跨度,您还可以在不使用硬编码 XML 的情况下动态更改外观

于 2012-06-14T09:05:28.633 回答