Android Bottomsheet TextView高度未在首次展开时调整

Android Bottomsheet TextView高度未在首次展开时调整,第1张

概述TL; DR:Bottomsheet中的TextView在第一次展开Bottomsheet时没有显示包装的多行文本,但在折叠后自行调整. 所以我使用了design-23.2.1库中的Bottomsheet. 我的布局文件如下所示: <android.support.design.widget.CoordinatorLayout> ...... <LinearLayout TL; DR:Bottomsheet中的TextVIEw在第一次展开Bottomsheet时没有显示包装的多行文本,但在折叠后自行调整.

所以我使用了design-23.2.1库中的Bottomsheet.

我的布局文件如下所示:

<androID.support.design.Widget.CoordinatorLayout>    ......    <linearLayout        androID:ID="@+ID/bottom_sheet"        androID:layout_wIDth="match_parent"        androID:layout_height="wrap_content"        androID:orIEntation="vertical"        app:behavior_peekHeight="@dimen/bottom_sheet_peek_height"        app:layout_behavior="androID.support.design.Widget.BottomSheetBehavior"/></androID.support.design.Widget.CoordinatorLayout>

Bottomsheet的内容基本上是一个列表:

<linearLayout    androID:layout_wIDth="match_parent"    androID:layout_height="wrap_content"    androID:orIEntation="vertical">    <TextVIEw          androID:layout_wIDth="match_parent"         androID:layout_height="wrap_content"         androID:singleline="false" />    ...</linearLayout>

问题是每当Bottomsheet第一次设置为STATE_EXPANDED时,TextVIEw是单行并且文本被包装,并且在行结束时没有省略号….

然后在设置为STATE_ColLAPSED后,TextVIEw的高度很好,并且正确排列多行.

我知道在设置为STATE_ColLAPSED之后发生了高度重新布局,因为我将它从折叠中滑出并且多行已经存在.

提供了一个解决方法here.我跟着它并添加了这个:

bottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {    @OverrIDe    public voID onStateChanged(@NonNull VIEw bottomSheet,int newState) {        if (newState == BottomSheetBehavior.STATE_EXPANDED) {            bottomSheetBehavior.onLayoutChild(coordinatorLayout,bottomSheetVIEw,VIEwCompat.LAYOUT_DIRECTION_LTR);        }    }    ........}

当Bottomsheet第一次展开时,它确实使高度重新调整.然而,它在扩展动画完成后突然发生.

有没有办法在扩展动画之前调整高度,就像谷歌地图一样?

更新

我发现这个问题是因为我在扩展之前将Bottomsheet设置为STATE_ColLAPSED.如果没有设置那么问题就会消失,第一次正确调整高度.

现在我的问题是:为什么在扩展之前将它设置为STATE_ColLAPSED会导致该问题?

解决方法 如果由于某种原因你仍然需要使用旧的支持库,这里是解决方法.

mBottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {        @OverrIDe        public voID onStateChanged(@NonNull final VIEw bottomSheet,int newState) {            bottomSheet.post(new Runnable() {                @OverrIDe                public voID run() {                    //workaround for the bottomsheet  BUG                    bottomSheet.requestLayout();                    bottomSheet.invalIDate();                }            });        }        @OverrIDe        public voID onSlIDe(@NonNull VIEw bottomSheet,float slIDeOffset) {        }    });
总结

以上是内存溢出为你收集整理的Android Bottomsheet TextView高度未在首次展开时调整全部内容,希望文章能够帮你解决Android Bottomsheet TextView高度未在首次展开时调整所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1125767.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存