【问题标题】:My own AppcompatDialog generates a really ugly shadow/elevation我自己的 AppcompatDialog 生成了一个非常丑陋的阴影/高度
【发布时间】:2019-08-03 10:06:29
【问题描述】:

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

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

截图 enter link description here

styles.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();
    }

活动

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

我预计会出现正常的黑色或浅灰色阴影,例如 Google 已弃用的 ProgressDialog

【问题讨论】:

    标签: java android customdialog


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      是的,这有帮助!非常感谢。但是移除这个标志,移除了整个变暗的背景。我在我的活动上构建了一个不可见的变暗视图的解决方法,每次弹出对话框时我都会显示它。

      我将它添加到我的活动布局中

      <View
          android:id="@+id/dimBackground"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:background="@color/colorDimBackground"
          android:visibility="invisible">
      
      </View>
      

      我的颜色是这样的:

      <color name="colorDimBackground">#B3000000</color>
      

      #B3 是 70% 不透明度的十六进制代码。您可以在此处找到包含所有十六进制值的表格:

      Hex values for opacity

      在显示对话框之前,我让视图可见

      findViewById(R.id.dimBackground).setVisibility(View.VISIBLE);
          LoadingDialog loadingDialog = new LoadingDialog();
          loadingDialog.show(getSupportFragmentManager(), "loading dialog");
      

      也许这个问题有更实用的解决方案,但我不知道!?

      这是结果:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-24
        • 2021-05-17
        • 1970-01-01
        • 1970-01-01
        • 2016-10-18
        • 1970-01-01
        • 2012-11-14
        相关资源
        最近更新 更多