3

我对 Android 还很陌生,如果没有这个论坛,我永远不会走到现在这样。这是我的问题:我正在使用一个简单的 LinearLayout,其 ImageView 垂直位于 TextView 上方。我的目标是显示一系列屏幕,顶部有一个图像,底部有一个简短的文本标题。文本是可换行的,并且应该缩放图像以填充剩余的可用垂直空间。

如果我保持文本字体大小不变(我通常使用 .setTextSize(35) ),一切都会正常工作。问题是当我显示一个空图像时,我选择放大文本(.setTextSize(120))。这可以正常工作..但是当我接下来显示后续图像并将文本大小恢复为 35 时,图像底部和现在较小文本区域的顶部之间存在很大的未填充间隙。

似乎正在发生的是,使用较大的文本大小曾经以某种方式永久增加了 TextView 的最小高度。我试过清除TextView(.setText(“”)..将大小更改为非常小(.setTextSize(12)......并无休止地摆弄LinearLayout参数(重量,重力)......无济于事。任何有关如何解决此问题的想法都将受到欢迎。

<ImageView android:id="@+id/img" android:layout_width="match_parent"
    android:layout_height="0dp" android:layout_weight="1.0" android:layout_gravity="fill_vertical" android:contentDescription="@string/desc" />

<TextView android:id="@+id/caption" android:layout_width="match_parent"
    android:layout_height="wrap_content" android:layout_weight="0" android:layout_gravity="bottom"
    android:gravity="center"/>
4

2 回答 2

3

***发布后发现的解决方案:原来这是自 Android 3.1 以来的一个已知错误。请参阅Android:TextView height doesn't change after shrinking font size

在那里列出的推荐解决方案/解决方法中,我喜欢的是每次设置文本时:

setText("我是文本",TextView.BufferType.SPANNABLE);

或者在调整文本大小后,只需执行以下操作: setText(getText(),TextView.BufferType.SPANNABLE);

于 2013-06-18T18:03:35.647 回答
0

无论这个答案有多大帮助,我认为android:layout_weight="0"都是多余的。一个重量声明(比如android:layout_weight="1")也更经常伴随着一个android:layout_height="0dp"or android:layout_width="0dp",这取决于包含的方向LinearLayout

于 2013-06-18T04:42:41.827 回答