java - 我自己的 AppcompatDialog 生成了一个非常丑陋的阴影/高程

标签 java android customdialog

我尝试在 android 上创建自己的自定义加载对话框。那没问题,但是对话框在出现时会产生非常难看的阴影

我尝试使用默认颜色主题化我的 android 而不是我自己的。我尝试设置一个透明的窗口背景并将高度设置为 0dp

截图 enter link description here

样式.xml

<style name="AppTheme.Dark" parent="Theme.AppCompat.NoActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>

        <!--<item name="android:windowBackground">@color/colorPrimary</item>-->
        <item name="android:windowBackground">@color/colorAccent</item>
    </style>

<style name="AppTheme.Dark.Loading.Dialog" parent="Theme.AppCompat.Dialog.Alert">
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:textColorPrimary">#FFFFFF</item>
        <item name="android:background">@color/colorPrimary</item>
    </style>

对话框布局.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:theme="@style/AppTheme.Dark.Loading.Dialog"
    android:padding="16dp"
    >

        <TextView
            android:id="@+id/text_view_loading_dialog"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Authenticating..."
            android:textSize="16sp"
            android:textStyle="bold"
            android:gravity="center"
            />

        <ProgressBar
            android:id="@+id/progress_bar_loading_dailog"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_toRightOf="@id/text_view_loading_dialog"


            android:indeterminate="true" />
</LinearLayout>

对话框类

public class LoadingDialog extends AppCompatDialogFragment {

    private TextView messageTextView;

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        LayoutInflater inflater = getActivity().getLayoutInflater();
        View view = inflater.inflate(R.layout.layout_loading_dialog, null);
        builder.setView(view);
        messageTextView = view.findViewById(R.id.text_view_loading_dialog);


        return builder.create();
    }

Activity

 LoadingDialog loadingDialog = new LoadingDialog();
loadingDialog.show(getSupportFragmentManager(), "loading dialog");

我希望有一个正常的黑色或浅灰色阴影,就像 Google 的堕落的 ProgressDialog

最佳答案

在您的 Activity 中,添加 clearFlags() 方法,如下所示:

LoadingDialog loadingDialog = new LoadingDialog();
loadingDialog.getWindow().clearFlags(LayoutParams.FLAG_DIM_BEHIND);
loadingDialog.show(getSupportFragmentManager(), "loading dialog");

关于java - 我自己的 AppcompatDialog 生成了一个非常丑陋的阴影/高程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57337303/

相关文章:

java - 如何在显示 android 后更改自定义对话框中 View 的可见性

java - 将韩文(韩文字母)字母分解为各个元素?

Java 子字符串如果为零则删除第一个字符

java - 如何打开导入

java - 使用 'goto' 从 if 移动到 else

java - 创建主题

java - fragment 无法转换为上下文

android - 自定义 youtube 播放器不更新搜索栏

android - 如何在自定义对话框中创建正负按钮

android - 在 onClick 中获取 Dialog 的引用