Диалог хода выполнения setContentView не работает в onCreateDialog DialogFragment - PullRequest
0 голосов
/ 25 мая 2018

Я использую этот код для отображения Progressbar в соответствии с моими потребностями:

public class DelayedProgressDialog extends  DialogFragment
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
         setCancelable(false);
    }



    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState)
    {
          ProgressDialog dialog = new ProgressDialog(getActivity());
        dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
        dialog.setTitle(null);
        dialog.setContentView(R.layout._task);
        dialog.setIndeterminate(false);
        return dialog;
    }
}

xml:

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

    <ProgressBar
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="@dimen/_100sdp"
        android:layout_height="@dimen/_100sdp"
        android:id="@+id/progressBar"
        android:layout_centerInParent="true"
        android:indeterminateTint="@android:color/white"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />
</RelativeLayout>

Теперь проблема в том, что мой пользовательский индикатор выполнения не отображается в этом фрагментекогда я вызываю это: показывая нормальный индикатор на левой стороне без заголовка, я хочу показать в центре.и если я удалил setContentview, то не получил никакого эффекта, что означает, что мое пользовательское представление не отображается в этом, как я могу показать свое представление в этом.

1 Ответ

0 голосов
/ 25 мая 2018

Вы можете использовать базовое диалоговое окно, например, класс Dialog, а затем установить вид контента, который вы спроектировали в макете (что кажется правильным).Поскольку вы используете ProgressDialog, он может мешать вашему виджету ProgressBar, определенному в вашем макете.

Вот как вы можете это сделать:

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    Dialog dialog = new Dialog(getActivity());
    dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
    dialog.setTitle(null);
    dialog.setContentView(R.layout._task);
    dialog.setIndeterminate(false);
    return dialog;
}

Также вы можете попробоватьс диалогом вместо DialogFragment:

public void showProgressDialog() { 
   Dialog dialog = new Dialog(getActivity());
   dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
   dialog.setTitle(null);
   dialog.setContentView(R.layout._task);
   dialog.setIndeterminate(false);
   dialog.show();
}
...