动态添加文本后Textview不调整大小?

Posted

技术标签:

【中文标题】动态添加文本后Textview不调整大小?【英文标题】:Textview not resizing after dynamically adding text? 【发布时间】:2016-09-09 08:58:52 【问题描述】:

这是我的 XML。我正在动态添加文本并将其设置为 XML 中的 wrap_content,但之后文本视图似乎没有根据包含的文本调整大小。我正在使用可展开的布局来展开来自https://github.com/AAkira/ExpandableLayout 的点击。 我假设其中一个父高度设置错误,但我检查了几乎所有组合,似乎没有任何帮助。将高度设置为硬编码(500dp)效果很好。谁能帮我吗?谢谢!

<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_
    android:layout_
    xmlns:card_view="http://schemas.android.com/tools">

    <ScrollView
        android:layout_
        android:layout_
        android:fillViewport="true">

        <LinearLayout
            android:layout_
            android:layout_
            android:orientation="vertical">

            <android.support.v7.widget.CardView
                android:layout_
                android:layout_
                android:id="@+id/cardviewTwitterMessages"
                android:layout_marginBottom="8dp"
                card_view:cardElevation="4dp"
                card_view:cardUseCompatPadding="true"
                card_view:cardCornerRadius="5dp">

                <RelativeLayout
                    android:layout_
                    android:layout_>

                    <Button
                        android:id="@+id/expandableButton1"
                        android:layout_
                        android:layout_
                        android:background="@color/colorPrimary"
                        android:drawableLeft="@android:drawable/arrow_down_float"
                        android:onClick="expandableButton1"
                        android:paddingRight="10dp"
                        android:text="Recent Tweets"
                        android:textColor="#fff" />

                    <com.github.aakira.expandablelayout.ExpandableRelativeLayout
                        android:id="@+id/expandableLayout1"
                        android:layout_
                        android:layout_
                        android:layout_below="@+id/expandableButton1"
                        android:background="#fff"
                        android:padding="16dp"
                        app:ael_duration="400"
                        app:ael_expanded="false"
                        app:ael_interpolator="bounce"
                        app:ael_orientation="vertical">

                        <TextView
                            android:textColorLink="@color/colorPrimary"
                            android:id="@+id/TwitterMessagesText"
                            android:layout_
                            android:layout_
                            android:minLines="50"/>
                    </com.github.aakira.expandablelayout.ExpandableRelativeLayout>
                </RelativeLayout>
            </android.support.v7.widget.CardView>
        </LinearLayout>

    </ScrollView>

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab2"
        android:layout_
        android:layout_
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin"
        android:src="@android:drawable/ic_input_add"
        android:tint="#fdfdfd" />

</android.support.design.widget.CoordinatorLayout>

【问题讨论】:

更改为 What is the difference between match_parent and fill_parent?的可能重复 【参考方案1】:

您的 TextView 正在尝试匹配父项。 改为 wrap_content

<TextView
    android:textColorLink="@color/colorPrimary"
    android:id="@+id/TwitterMessagesText"
    android:layout_
    android:layout_
    android:minLines="50"/>

此外,您的 ScrollView 正在尝试 wrap_content,而 TextView 的所有子级都尝试 ma​​tch_parent。这意味着当那些相同的孩子试图找出它们的父宽度时(在 ScrollView 的链中),ScrollView 试图包装它的孩子。

当您在 TextView 上将宽度设置为 500dp 时,所有向上的视图都会继承相同的大小(因为它们的 match_parent 宽度),因此可以正常工作。 在您的 ScrollView 上,ma​​tch_parent 或给它一些宽度,以便它的孩子适应它。

@EDIT

另外,作为简洁代码的问题,将您的 fill_parent 替换为 ma​​tch_parent。 在 API 8 上,fill_parent 已弃用并替换为 match_parentreference here

【讨论】:

按照您的建议尝试过,它仍然拒绝执行任何操作。 coordinatorlayout会不会导致这些问题? 几乎没有。 coordinatorLayout 工作得很好。你如何填充TextVIew?通过适配器还是通过基本的 textView.setText("asd")?

以上是关于动态添加文本后Textview不调整大小?的主要内容,如果未能解决你的问题,请参考以下文章

调整大小后 TextView 无法正确换行

Swift - 在标签中动态调整大小后动态调整视图大小

如何调整textview的大小以不超出屏幕

根据 textView 调整单元格大小不起作用?

Android,在TextView中调整我的文本大小的问题[重复]

Android 自定义TextView实现文本内容自动调整字体大小以适应TextView的大小