GridLayout中TextView的动态高度

时间:2012-09-02 21:42:56

标签: android textview clipping grid-layout

我使用GridLayout使用库兼容性时遇到问题(没有尝试过)。我使用的是app:layout_gravity="fill_horizontal"而不是android:layout_gravity="fill_horizontal",但TextView中的所有内容都未显示。为了显示所有内容,我必须设置TextView“标题”的高度,但我想要一个动态高度,而不是设置高度。

有什么想法吗?

2 个答案:

答案 0 :(得分:30)

您必须为TextView设置layout_width="0dp"layout_gravity="fill_horizontal"

<TextView
    android:layout_width="0dp"
    android:layout_gravity="fill_horizontal" />

请在此处查看完整示例:https://groups.google.com/d/msg/android-developers/OmH3VBwesOQ/ZOGR0SGvC3cJ或此处:http://daniel-codes.blogspot.com/2012/01/gridlayout-view-clipping-issues.html

答案 1 :(得分:19)

TextView内使用GridLayout是有问题的,但 是将两者结合使用的好方法。

这就是示例布局的样子:

TextView inside GridLayout

这是完整的布局xml,重要的行标有***。

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:columnCount="3"              *   this example uses 3 columns
    android:orientation="horizontal" >   *** use "horizontal"

<TextView                                *   just a normal view
    android:layout_column="0"
    android:layout_row="0"
    android:background="#666666"
    android:text="A"
    android:textColor="#afafaf"
    android:textSize="60sp"
    android:textStyle="bold" />

<TextView                                *   this text will not be cut!
    android:layout_width="0dp"           *** important: set width to 0dp
    android:layout_height="wrap_content"
    android:layout_column="1"
    android:layout_columnSpan="2"        *   colspan does also work with this
    android:layout_gravity="fill_horizontal|bottom"        *** set to "fill*"!
    android:layout_row="0"
    android:text="This view has 2 columns. Lorem ipsum dolor sit amet, consetetur sadipscing elitr."
    android:textColor="#666666" />

</GridLayout>

根据您的需要,此组合也可以使用:

    android:layout_width="0dp"
    android:layout_height="0dp"
    android:layout_gravity="fill"
    android:gravity="bottom"

请注意,您不必使用android以外的任何命名空间来实现此目的。