Android-更改底部对话框的高度以容纳新文本

Android-更改底部对话框的高度以容纳新文本,android,textview,bottom-sheet,Android,Textview,Bottom Sheet,我有一段代码,通过按下按钮激活: helpdialog = new BottomSheetDialog(this); View view = getLayoutInflater().inflate(R.layout.fragment_bottom_layout, null); helpdialog.setContentView( view ); TextView tv = (TextView) v

我有一段代码,通过按下按钮激活:

           helpdialog = new BottomSheetDialog(this);

            View view = getLayoutInflater().inflate(R.layout.fragment_bottom_layout, null);

            helpdialog.setContentView( view );

            TextView tv = (TextView) view.findViewById( R.id.splo);

               // Text to place in dialog omitted

            tv.setText( sp );

            helpdialog.show();
我的fragment_bottom_layout.xml布局如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:text=""
            android:id="@+id/splo"
       />
</LinearLayout>

它在大多数情况下工作正常,但有时会将文本附加到textview或显示非常大的文本,在这种情况下,它会强制文本顶部消失或被截断,如FIFO。如何防止这种情况并调整对话框大小以容纳所有文本?我曾考虑将底部纸张的高度设置为tv.getLineCount()*tv.getLineHeight(),但我找不到一种简单的方法将其应用于对话框本身

编辑:经过进一步调查,我发现了另一个问题。如果我打开一个包含一长段文本的底部对话框,并向上滚动,使对话框顶部脱离窗口顶部,当我向下滚动时,脱离顶部的文本将丢失。这可能与我上面遇到的问题有关。

在.show()之后添加此项

//androidX
View bottomSheetInternal=helpdialog.findviewbyd(com.google.android.material.R.id.design\u bottom\u sheet);
/*
非androidX使用:
View bottomSheetInternal=helpdialog.findviewbyd(android.support.design.R.id.design\u bottom\u sheet);
*/
BottomSheetBehavior.from(bottomSheetInternal).setState(BottomSheetBehavior.STATE_展开);
BottomSheetBehavior.from(bottomSheetInternal).setFitToContents(true);
BottomSheetBehavior.from(bottomSheetInternal).SetHidable(false);
还可以尝试将textview包装到scrollview中


查看完整演示

在.show()之后添加此选项

//androidX
View bottomSheetInternal=helpdialog.findviewbyd(com.google.android.material.R.id.design\u bottom\u sheet);
/*
非androidX使用:
View bottomSheetInternal=helpdialog.findviewbyd(android.support.design.R.id.design\u bottom\u sheet);
*/
BottomSheetBehavior.from(bottomSheetInternal).setState(BottomSheetBehavior.STATE_展开);
BottomSheetBehavior.from(bottomSheetInternal).setFitToContents(true);
BottomSheetBehavior.from(bottomSheetInternal).SetHidable(false);
还可以尝试将textview包装到scrollview中


查看完整演示

您好,我不得不稍微更改您的代码View bottomSheetInternal=helpdialog.findviewbyd(android.support.design.R.id.design\u bottom\u sheet);BottomSheetBehavior.from(bottomSheetInternal).setState(BottomSheetBehavior.STATE_展开);当我打开对话框时,它填满了整个屏幕的垂直空间,但不允许我向上滚动阅读底部。顺便说一句,唯一的真正区别是我在第一行代码中使用了helpdialog而不是builder。您好,我不得不稍微更改您的代码View bottomSheetInternal=helpdialog.findViewById(android.support.design.R.id.design_bottom_sheet);BottomSheetBehavior.from(bottomSheetInternal).setState(BottomSheetBehavior.STATE_展开);当我打开对话框时,它填满了屏幕的整个垂直空间,但不允许我向上滚动阅读底部。顺便说一句,唯一真正的区别是我在第一行代码中使用了helpdialog而不是builder。