文字包装在两行 - recyclerview

时间:2016-05-05 05:56:13

标签: android textview android-recyclerview

我正在设计具有预期用户界面的应用

Expected

我正在使用RecyclerView

db.collection('topic').aggregate(
    [{
        "$unwind": "$items"
    }, {
        "$unwind": "$items.votes.people"
    }, {
        "$match": {
            "items.votes.people.username": "user2"
        }
    }], function(err, docs) {
        if(!err) {
            docs.forEach(function(doc) {
                // code
            });

        } else {
            console.log(err);
        }
        db.close();
    });

这是行xml文件

StaggeredGridLayoutManager manager=new StaggeredGridLayoutManager(3,1);
        recyclerView.setLayoutManager(manager);

使用这个我得到输出

What i am getting

我不希望标签进入第二行。我知道我已经使用跨度计数为3,因此在一行中获得3个标签,但有没有办法避免文本换行在两行?

2 个答案:

答案 0 :(得分:5)

我建议您使用AndroidTagView

而不是RecyclerView

需要添加依赖

dependencies {
   compile 'co.lujun:androidtagview:1.0.3'
}

在主xml中,而不是RecyclerView

<co.lujun.androidtagview.TagContainerLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="0dp"
android:padding="10dp"
app:container_enable_drag="false"
app:horizontal_interval="10dp"
app:vertical_interval="10dp"
app:tag_clickable="true"
app:tag_theme="pure_teal" />

并在您的活动/片段中

TagContainerLayout mTagContainerLayout = (TagContainerLayout) findViewById(R.id.tagcontainerLayout);
mTagContainerLayout.setTags(List<String> tags);

你会得到类似下面的输出,为了更多你可以参考那个库,他们也提供了很好的示例项目。

enter image description here

其他有用的库列在下面:

https://github.com/loopeer/MultiTextTagView
https://github.com/klinker41/android-chips
https://github.com/ApmeM/android-flowlayout
https://github.com/blazsolar/FlowLayout

答案 1 :(得分:0)

我认为,您必须编写自定义ViewGroup。使用ViewGroup的onMeasure和onLayout,获取屏幕的总宽度。然后测量TextView的大小。如果TextView宽度小于屏幕宽度,请放置TextView。继续下一个TextView,保持宽度。如果TextView宽度大于剩余的屏幕宽度,则将TextView放在下一行。继续此操作,直到放置所有TextView。