Pergunta

Eu gostaria de mostrar um progresso modal overlay "roda" no meu ponto de vista.

O ProgressDialog chega perto, mas eu não quero que o fundo de diálogo ou de fronteira.

Eu tentei definindo o drawable da janela de diálogo de fundo:

this.progressDialog = new ProgressDialog(Main.this);

this.progressDialog.getWindow().setBackgroundDrawable(new ColorDrawable(0));
this.progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
this.progressDialog.setCancelable(false);
this.progressDialog.setIndeterminate(true);

this.progressDialog.show();

mas sem sucesso (ou seja, ainda parece o mesmo que sem a ... Código setBackgroundDrawable).

Foi útil?

Solução

Você check-out este tutorial ? No final da página que fala sobre como criar um diálogo personalizada, e que ajuda poderio você colocar uma caixa de diálogo de progresso giratório com os seus próprios fundos.

Outras dicas

Não tenho certeza se há uma maneira melhor, mas você poderia começar a roda girador por conta própria usando um ProgressBar e defini-lo para ser interdeterminate. Se você estiver usando um AbsoluteLayout você pode colocá-lo sobre outros pontos de vista. Esta disposição deve demonstrar este método com XML:

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout android:id="@+id/AbsoluteLayout"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <ProgressBar android:id="@+id/ProgressBar"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:indeterminate="true" android:indeterminateOnly="true"
        android:isScrollContainer="true" android:layout_x="100dip"
        android:layout_y="10dip" android:soundEffectsEnabled="true"></ProgressBar>
    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:text="@string/hello"
        android:layout_gravity="center_horizontal" android:gravity="center_horizontal"
        android:layout_y="25dip" />
</AbsoluteLayout>

A fim de criar um progresso tela cheia em um fundo escurecido Eu uso um FrameLayout e definir a visibilidade do RelativeLayout para visível quando necessário ou ido embora quando a longa operação é feita:

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

    <ScrollView 
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

        <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:orientation="vertical"
        android:padding="3dip" >

            <!-- Your regular UI here -->

    </LinearLayout>
   </ScrollView>

   <RelativeLayout
       android:id="@+id/relativelayout_progress"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:visibility="gone"
       android:background="#aa000022" >

       <ProgressBar 
           android:layout_centerInParent="true"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:indeterminateOnly="true" />

    </RelativeLayout>
</FrameLayout>

A solução da Klarth trabalhou para mim, muito obrigado!

No meu caso eu usei o layout_gravity para a colocação centro da progress_indicator, ao invés de usar coordenadas explícitos.

    <ProgressBar android:id="@+id/pb"
        android:layout_width="40dp" 
        android:layout_height="40dp"
        android:indeterminate="true" 
        android:indeterminateOnly="true"
        android:isScrollContainer="true" 
        android:layout_gravity="center_vertical|center_horizontal"
        android:soundEffectsEnabled="false"
        />
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top