我认为我想要以大格式或紧凑格式进行布局,具体取决于textview中文本的长度,如下所示:
实现这一目标的最佳方法是什么?
我想我需要测量文本和控件的长度,并获取可用空间以查看它们是否适合一行。如果他们将使用紧凑的布局,否则使用大布局。
这是正确的方法,还是有办法通过单一布局实现这一目标?
答案 0 :(得分:0)
将两者放在LinearLayout中,并以类似
的方式在java文件中以编程方式设置其方向 LinearLayout layout = /* ... */;
layout.setOrientation(LinearLayout.VERTICAL);
如果您想要紧凑,请设置Horizonatal,如果您想要大型,请设置垂直。 并根据您从下面的代码
获得的宽度放置条件 Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
答案 1 :(得分:0)
您可以尝试为所有textViews制作用户设置文本,并在使用之后使用以下内容:
RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
if(layout.getWidth()/2<Title.getWidth()){
p.addRule(RelativeLayout.BELOW, R.id.Title);
controls.setLayoutParams(p);
}else{
p.addRule(RelativeLayout.RIGHT_OF, R.id.Title);
controls.setLayoutParams(p);
}
答案 2 :(得分:0)
它被称为FlowLayout。谷歌它支持多个支持它的图书馆。
答案 3 :(得分:0)
您需要的布局称为FlowLayout。但是android SDK目前没有这样的布局支持。有很好的第三方图书馆和&amp;其中一个是FlowLayout。
摇篮:
compile 'com.wefika:flowlayout:0.4.1'
在你的布局中:
<com.wefika.flowlayout.FlowLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="start|top">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Lorem ipsum" />
</com.wefika.flowlayout.FlowLayout>