如何在动态显示/隐藏EditText时增大/缩小DialogFragment?

时间:2017-12-30 17:19:05

标签: android dialogfragment

我有一个非常简单的对话框:

enter image description here

点击按钮后,我想切换第二个EditText的可见性:

public class SomeDialog extends DialogFragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View root = inflater.inflate(R.layout.some_dialog, container, false);

        EditText editSecond = root.findViewById(R.id.text_second);
        Button buttonOk = root.findViewById(R.id.button_ok);

        buttonOk.setOnClickListener(v -> {
            editSecond.setVisibility(editSecond.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
        });

        return root;
    }
}

我希望它能够流畅地制作动画,所以我设置了#34; animateLayoutChanges" to" true":

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/root_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:animateLayoutChanges="true"
>
    <TextView
        android:id="@+id/titleText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimary"
        android:padding="8dp"
        android:text="Title"
        android:textAppearance="@style/TextAppearance.AppCompat.Large.Inverse"
        android:textSize="18sp"
    />

    <EditText
        android:id="@+id/text_first"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="First"
    />

    <EditText
        android:id="@+id/text_second"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Second"
    />

    <Button
        android:id="@+id/button_ok"
        style="@style/Widget.AppCompat.Button.Colored"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="end"
        android:layout_marginTop="8dp"
        android:text="Ok"
    />

</LinearLayout>

对话框已设置动画,但遗憾的是订单不正确。

会发生什么:

  1. TextEdit消失
  2. 对话框高度(立即)捕捉到较小的高度
  3. 按钮向上移动(动画)
  4. 因此在2)和3之间,按钮不可见,并从屏幕外(底部)慢慢滑入(已经较小的)对话框。

    可以做些什么?

    (代码示例有效,可以按原样复制/粘贴到Android Studio中)

0 个答案:

没有答案