【问题标题】:AutoResizeTextView does not resize after other Views are hidden (View.GONE)隐藏其他视图后 AutoResizeTextView 不会调整大小 (View.GONE)
【发布时间】:2015-03-21 06:46:18
【问题描述】:

上下文

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

问题

当我在 Fragment 的视图中隐藏其他 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);

都不起作用,文本没有调整到新的大小。

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>

【问题讨论】:

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


    【解决方案1】:

    改为:

    android:layout_height="wrap_content"
    

    类型:

    android:layout_height="0dp"
    

    【讨论】:

    • 感谢您指出,它解决了 layout_weight 的问题。但是,它并没有解决所描述的问题......
    【解决方案2】:

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

    android:layout_width="wrap_content"
    

    因此,在布局更改时,AutoResizableTextView 的宽度没有调整!结果,文本无法增大。因此宽度的设置应该是:

    android:layout_width="fill_parent"
    

    这样 AutoResizableTextView 的宽度足够大以容纳更大的文本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-17
      • 2014-01-22
      • 2017-03-10
      • 2017-12-18
      • 1970-01-01
      相关资源
      最近更新 更多