Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android Bottomsheet TextView高度未在首次展开时调整大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_489_2@
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会导致该问题?

@H_489_2@

解决方法

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

@H_646_11@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) { } }); @H_489_2@ @H_489_2@

@H_489_2@
@H_489_2@

大佬总结

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

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。