使用单个textview和数据数组在android中标记设计

时间:2016-12-22 17:40:47

标签: android android-layout textview

我是Android编程的新手,我想在我的Android应用程序中实现这一点:

enter image description here

我的JSON是这样的:

"Keywords":["medical","science","international"],

我的Android代码就是这样:

String keyStr = ""; 
for (String str : m.getKeywords())  
{           
    keyStr += str + " ";         
}

当我将其放入TextView时,会显示如下结果:

  国际医学科学

但是,我想在上面的图片中给出它所显示的效果,我在我的网站上做过。一种解决方案是使用HTML.fromhtml(),但它不适用于我,我需要任何其他解决方案。

1 个答案:

答案 0 :(得分:0)

假设每个标记都可以通过右侧的十字删除,您必须创建多个TextView,每个ImageView应该有onClickListener

从我的角度来看,可能是在很小的宽度屏幕上渲染很多标签,所以我使用HorizontalScrollView。所以你可以创建一个容器:

<HorizontalScrollView
    android:id="@+id/horizontal_scrollview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:fillViewport="true">

    <LinearLayout
        android:id="@+id/tags_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:orientation="horizontal" />
</HorizontalScrollView>

关于标签的数量,请执行循环以动态创建每个标签,如下所示:

LinearLayout tagsContainer = (LinearLayout) findViewById(R.id.tags_container);

for (String keyword : m.getKeywords()) { 
    // inflate the child view by using a custom layout
    View tagView = LayoutInflater.from(this).inflate(R.layout.tag_layout, null);
    TextView tagTextview = (TextView) tagView.findViewById(R.id.tags_textview);
    ImageView tagImageview = (ImageView) tagView.findViewById(R.id.tags_imageview);

    // set the elements value
    tagTextView.setText(keyword);
    tagImageView.setOnClickListener(new View.OnClickListener() {
        // close the tag
    }
    // add to the container
    tagsContainer.addView(tagView);          
}