进度显示自定义微调器,但也是一个栏

progress show custom spinner but also a bar

出于某种原因 - 当 运行 我的应用程序 - 正在处理(服务器请求)时 - 我看到我的自定义微调器(好的)还有一个栏...我不明白为什么.. 并非在所有设备中都会发生...

这是我的代码:

 public ServerRequests(Context context) {
    progressDialog = new Dialog(context);
    progressDialog.setCancelable(false);
    progressDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
    progressDialog.setContentView(R.layout.progress_spinner);

}

progress_spinner.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center">

    <ProgressBar
        android:id="@+id/progressBar1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:indeterminateDrawable="@drawable/progress"/>

</RelativeLayout>

progress.xml

<rotate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="5"
    android:toDegrees="1080">

    <shape
        android:shape="ring"
        android:innerRadiusRatio="3"
        android:thicknessRatio="8"
        android:useLevel="false">

        <size
            android:height="48dip"
            android:width="48dip" />

        <gradient
            android:endColor="#cdcd00"
            android:startColor="@android:color/transparent"
            android:type="sweep"
            android:angle="0"
            android:useLevel="false" />
    </shape>

</rotate>

这个栏实际上是对话框标题栏分隔线。它不存在于棒棒糖或更高版本但它确实存在于 ics to kk

所以你只需要像这样将它设置为透明:

progressDialog = new Dialog(context);
progressDialog.setCancelable(false);
progressDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
progressDialog.setContentView(R.layout.progress_spinner);
if (android.os.Build.VERSION.SDK_INT <= 19 && android.os.Build.VERSION.SDK_INT >= 14) {
    int dividerId = progressDialog.getContext().getResources().getIdentifier("android:id/titleDivider", null, null);
    View divider = progressDialog.findViewById(dividerId);
    divider.setBackgroundColor(Color.TRANSPARENT);
}

阅读更多:How to change alert dialog header divider color android