隐藏其他视图后,AutoResizeTextView不会调整大小(View.GONE)

时间:2015-01-22 12:59:26

标签: android android-layout textview android-canvas visibility

上下文

我在LinearLayout中有两个AutoResizeTextViews。我希望第一个大约是第二个大小的1/3,并且尽可能大。因此,我使用layout_weight = 1和layout_weight = 3,如下面的XML代码所示。

问题

当我在片段视图中隐藏其他TextViews(存储为mView)时,使用:

textView7.setVisibility(View.GONE);
(..many more to GONE..)

更多空间可用于LinearLayout,因此我希望AutoResizeTextViews增长。但是,两个AutoResizeTextViews不会增长,并且似乎保持其画布大小。它们被移动以与LinearLayout的新1/3比率对齐,因此LinearLayout内部确实存在空间。

当在设备重定向时重新启动Activity和View时(我不保留Fragment),它们会按预期更改,显然画布正确地重绘了。如何在不必转动设备的情况下正确重绘AutoResizeTextView?

已尝试

mView.forceLayout();
mView.refreshDrawableState();
mView.requestLayout();
mView.invalidate();
linearLayoutAutoFit.invalidate();
tvTimer.invalidate();
tvTimer.setTextsize(999);

全部无效,Text未调整为新尺寸。

XML代码

<LinearLayout
    android:id="@+id/linearLayoutAutoFit"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/viewline2"
    android:layout_below="@id/progressBar3"
    android:layout_alignParentLeft="true"
    >

    <AutoResizeTextView
        android:layout_weight="3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="@string/Ready"
        android:id="@+id/textViewAction"
        android:textSize="999sp"
        android:textColor="#ADFF2F"
        android:singleLine="true" />

    <AutoResizeTextView
        android:layout_weight="1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:id="@+id/tvTimer"
        android:textColor="#fff"
        android:text="@string/init_time"
        android:textSize="999sp"
        android:visibility="visible"
        android:singleLine="true" />
</LinearLayout>

2 个答案:

答案 0 :(得分:0)

代替:

android:layout_height="wrap_content"

输入:

android:layout_height="0dp"

答案 1 :(得分:0)

虽然Kastriot的答案非常接近,也是解决方案的一部分,但我今天通过使用Log输出测试AutoResizableTextView类中的值来找到解决方案。我犯的错误是我也有

android:layout_width="wrap_content"

因此,在布局更改时,AutoResizableTextView的宽度未调整!因此,文本的大小不会增加。因此宽度的设置应为:

android:layout_width="fill_parent"

使AutoResizableTextView的宽度足以容纳更大的文本。