首页 > 解决方案 > 自定义对话框中textview的高度为0

问题描述

我有一个自定义弹出对话框,但 textview 没有正确显示。比如我有活动A和活动B,现在我是活动B,当我回到活动A时,我的自定义弹出对话框会显示,但有时自定义对话框中的textview没有显示,我发现textview的高度为0,我不知道为什么!有没有人可以帮我弄清楚?谢谢!

下面的代码是有时无法正确显示的文本视图!

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="@dimen/popup_avatar_layout_margin"
    android:gravity="center"
    android:orientation="vertical">

    <TextView
        android:id="@+id/nick_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/popup_avatar_layout_margin"
        android:gravity="center_horizontal"
        android:textColor="@color/kcpopup_avatar_kidDialogContext"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:text="[NickName]" />


public class DialogPopupActivity extends Dialog{}
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
protected void onCreate(Bundle savedInstanceState){
setContentView(R.layout.kid_dialog_avatar_layout)
useDialogCustomAvatar();
super.onCreate(savedInstanceState);
}

我在方法 useDialogCustomAvatar 上设置了文本。下面的代码就是我所做的。

TextView nickNameView = findViewById(R.id.nick_name);
nickNameView.setText(title);

标签: androidtextviewdialog

解决方案


使用DialogFragment类而不是Dialog类和覆盖onCreateDialog方法。这是创建对话框的首选方式。该类Dialog不处理生命周期事件,这有时会导致消息不显示。

创建对话框片段

Dialog 和 Dialog Fragment 的区别


推荐阅读