Android listview项目是否动态创建多个文本?

时间:2014-03-07 05:57:59

标签: android android-listview

我想在TextView项中动态创建多个ListView。假设我使用LinearLayout它将水平或垂直创建textview。我想要多个textview与wraping。我如何创建这样的请分享您的宝贵意见,

屏幕下方图片。

enter image description here

注意: 每个文本视图都有单击操作

迈克投了8票,拉拉投了9票,就像那个带有包装纸的文字一样。

2 个答案:

答案 0 :(得分:0)

有什么问题,在linearLayout中使用textview?但我想,你真正想要的是spannable字符串,在这种情况下你可以设置格式(颜色,字体大小,样式和你想要的,以及每个单词的onClick动作,你只需要一个文本视图。< / p>

答案 1 :(得分:0)

我有一个包含文本视图的自定义视图(merge xml)(原来它是一个更复杂的视图)。 我的自定义视图类

public class示例扩展LinearLayout {

受保护的上下文上下文;

受保护的TextView titleView;

public Example(Context context) {
    super(context);
    this.context = context;
    LayoutInflater inflater = (LayoutInflater) `enter code here`context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    inflater.inflate(R.layout.bloghu_title_layout, this, true);
    this.setOrientation(LinearLayout.VERTICAL);

    titleView = (TextView) getChildAt(0);
}

public void setBlogTitle(String blogTitle, final String blogUrl, String author, final String authorUrl) {
    SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder();

    spannableStringBuilder.append(blogTitle.toUpperCase());
    spannableStringBuilder.append(" / ");
    spannableStringBuilder.setSpan(new RelativeSizeSpan(1.5f), 0, blogTitle.length() + 2, 0);
    spannableStringBuilder.append(author);
    spannableStringBuilder.setSpan(new RelativeSizeSpan(1.2f), spannableStringBuilder.length() - author.length(), spannableStringBuilder.length(), 0);

    spannableStringBuilder.setSpan(new NonUnderlineClickableSpan() {

        @Override
        public void onClick(View widget) {
            Log.d("span", blogUrl);
        }
    }, 0, blogTitle.length(), 0);
    spannableStringBuilder.setSpan(new NonUnderlineClickableSpan() {

        @Override
        public void onClick(View widget) {
            Toast.makeText(context, authorUrl, Toast.LENGTH_SHORT).show();
        }
    }, spannableStringBuilder.length() - author.length(), spannableStringBuilder.length(), 0);
    spannableStringBuilder.setSpan(new ForegroundColorSpan(context.getResources().getColor(R.color.index_orange)), 0, blogTitle.length(), 0);
    spannableStringBuilder.setSpan(new ForegroundColorSpan(context.getResources().getColor(R.color.black)),
            spannableStringBuilder.length() - author.length(), spannableStringBuilder.length(), 0);
    titleView.setMovementMethod(LinkMovementMethod.getInstance());
    titleView.setText(spannableStringBuilder, BufferType.SPANNABLE);
}

}

NonUnderlineClickableSpan()是一个扩展的ClickAbleSpan(),它只是因为我不想强调可点击的文本,结束它有一个你必须覆盖的空onclick方法: 公共类NonUnderlineClickableSpan扩展了ClickableSpan {

@Override
public void updateDrawState(TextPaint ds) {
   ds.setColor(ds.linkColor);
   ds.setUnderlineText(false); // set to false to remove underline
}

@Override
public void onClick(View widget) {
    // TODO Auto-generated method stub

}

正如你在Example类中看到的,你可以设置一个新的NonUnderlineClickableSpan,在它的'onClick()方法中你可以设置发生了什么,而不是你必须设置可点击跨度的第一个和最后一个字符,以及一个标志(这是最后一个参数,在本例中为0)。

Whit ForegroundSpan你可以设置字体颜色,你可以设置不同的文字大小的相对大小跨度,并且有很多跨度可以设置文本的样式并使其具有交互性,但它是android中未充分记录的部分。

我还没有找到关于这个主题的好教程,所以如果有人知道,请告诉我:)。