如何根据文本大小调整视图布局

时间:2016-07-27 04:48:05

标签: android android-layout textview

我认为我想要以大格式或紧凑格式进行布局,具体取决于textview中文本的长度,如下所示:

View layout

实现这一目标的最佳方法是什么?

我想我需要测量文本和控件的长度,并获取可用空间以查看它们是否适合一行。如果他们将使用紧凑的布局,否则使用大布局。

这是正确的方法,还是有办法通过单一布局实现这一目标?

4 个答案:

答案 0 :(得分:0)

将两者放在LinearLayout中,并以类似

的方式在java文件中以编程方式设置其方向

LinearLayout layout = /* ... */; layout.setOrientation(LinearLayout.VERTICAL);

如果您想要紧凑,请设置Horizo​​natal,如果您想要大型,请设置垂直。 并根据您从下面的代码

获得的宽度放置条件
    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>