片段对话框正确动画但布局完全是黑色

时间:2017-11-16 17:46:23

标签: java android android-animation

这是我在下面的dialogFragment类:

public static class MyDialog extends DialogFragment {
        @SuppressLint("InflateParams")
        @NonNull
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.styleDialog);
            // Get the layout inflater
            LayoutInflater inflater = getActivity().getLayoutInflater();

            // Inflate and set the layout for the dialog
            // Pass null as the parent view because its going in the dialog layout
            builder.setView(inflater.inflate(R.layout.custom_dialog, null));

            return builder.create();
        }

        @Override
        public void onStart() {
            super.onStart();

            if (getDialog() == null) {
                return;
            }

            DisplayMetrics metrics = getContext().getResources().getDisplayMetrics();
            float dpValue = 170f;
            float fPixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpValue, metrics);

            int dialogWidth = Math.round(fPixels);
            int dialogHeight = ViewGroup.LayoutParams.WRAP_CONTENT;

            if (getDialog().getWindow() != null) {
                getDialog().getWindow().setLayout(dialogWidth, dialogHeight);
            }

        }
    }

从我的活动中调用此方法以显示我的对话框:

private void showDialog() {
    DialogFragment dialogFragment = new MyDialog();
    dialogFragment.show(getSupportFragmentManager(), MyDialog.class.getName());
}

这是我的style.xml和anim.xml:

<style name="styleDialog" parent="@android:style/Theme.Dialog">
    <item name="android:windowAnimationStyle">@style/CustomDialogAnimation</item>
</style>

<style name="CustomDialogAnimation">
    <item name="android:windowEnterAnimation">@anim/animate_down_side_opens_up</item>
    <item name="android:windowExitAnimation">@android:anim/slide_out_right</item>
</style>

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="2000"
    android:fromXScale="1"
    android:fromYScale="0"
    android:pivotX="50%"
    android:pivotY="0%"
    android:toXScale="1.0"
    android:toYScale="1.0" />

当前情况: 我的对话框在从上到下的开放式扩展中滑动,这正是我想要的。

问题: 但是,对话框本身是完全黑色的,不包含任何视图。

enter image description here

注意:如果没有任何动画,对话框将包含其布局视图元素。

编辑:在下方添加自定义对话框布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:weightSum="3">

<TextView
    android:id="@+id/numberOneText"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_gravity="center"
    android:layout_marginTop="5dp"
    android:layout_weight="1"
    android:gravity="center"
    android:text="@string/numberOne"
    android:textSize="16sp" />

<TextView
    android:id="@+id/numberTwoText"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_gravity="center"
    android:layout_marginTop="10dp"
    android:layout_weight="1"
    android:gravity="center"
    android:text="@string/numberTwo"
    android:textSize="16sp" />

<TextView
    android:id="@+id/numberThreeText"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_gravity="center"
    android:layout_marginTop="10dp"
    android:layout_weight="1"
    android:gravity="center"
    android:text="@string/numberThree"
    android:textSize="16sp"
    android:layout_marginBottom="5dp"/>

</LinearLayout>

注意:更改Alert.sialog类从android.support.v7.app.AlertDialog导入到android.app.AlertDialog,将自定义对话框的UI更改为双平方对话框。图片如下:

enter image description here

1 个答案:

答案 0 :(得分:0)

一切都在那里,你无法看到它。像这样改变你的风格(添加一行,第一个样式标签内的第一行):

<style name="styleDialog" parent="@android:style/Theme.Dialog">
    <item name="android:background">@android:color/white</item>
    <item name="android:windowAnimationStyle">@style/CustomDialogAnimation</item>
</style>

<style name="CustomDialogAnimation">
    <item name="android:windowEnterAnimation">@anim/anim</item>
    <item name="android:windowExitAnimation">@android:anim/slide_out_right</item>
</style>

,您的布局及其内容变得可见。它可能看起来不像你想要的那样,但你可以从那里开始工作。亲眼看看:

enter image description here

使用android.support.v7.app.AlertDialog测试。