上下文:
我在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>
答案 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的宽度足以容纳更大的文本。