我正在设计具有预期用户界面的应用
我正在使用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);
使用这个我得到输出
我不希望标签进入第二行。我知道我已经使用跨度计数为3,因此在一行中获得3个标签,但有没有办法避免文本换行在两行?
答案 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);
你会得到类似下面的输出,为了更多你可以参考那个库,他们也提供了很好的示例项目。
其他有用的库列在下面:
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。