2012-12-17 18 views
12

Używam niestandardowego ProgressDialog w mojej aplikacji, jestem w stanie zrobić to niestandardowe, ale chcę również usunąć górną granicę lub okno progressDialog. W styles.xml zdefiniować customDialog jak Używanie niestandardowego ProgressDialog android

<style name="AppTheme" parent="android:Theme.Light" /> 

<style name="CustomDialog" parent="@android:style/Theme.Dialog"> 
    <item name="android:background">#7BC047</item> 
    <item name="android:textColor">#FFFFFF</item> 
    <item name="android:windowBackground">@null</item> 
    <item name="android:windowFrame">@null</item> 
</style> 

Do usuwania okna nadrzędnego mam ustawienia windowBackground null i windowFrame null ale did't pracę dla mnie. Obecnie moje własne okno dialogowe postępu wygląda tak, jak na poniższym obrazku: enter image description here

Używam tego kodu do ustawienia stylu progressDialog.

private void showProgressDialog() { 
    progressDialog = new ProgressDialog(this,R.style.CustomDialog); 
    progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
    progressDialog.setMessage("Logging in. Please wait."); 
    progressDialog.show(); 
} 

Tak, pomóżcie mi w sprawie tego problemu. Pomoc powinna być naprawdę doceniona.

+0

Spójrz na tej odpowiedzi [] (http://stackoverflow.com/a/3948347/1102014). – Stan

Odpowiedz

17

Ta odpowiedź nie rozwiązuje problemu podaną w pytaniu, ale przy szukaniu jak zaimplementować okno zwyczaj postępu, jest to jedyny związek wskazując SO . Powiedział, że znalazłem fajne i łatwe do użycia niestandardowe okno dialogowe postępu przez pewną Maksym Dybarskyi na tym link.

Wszystkie kredyty trafiają do twórcy, nie do mnie.Jestem po prostu dzielenie

Wszystko, co musisz zrobić, to dodać to do zależności:

dependencies { 
... 
    compile 'com.github.d-max:spots-dialog:[email protected]' 
} 

I wtedy zwyczaj styl:

<style name="Custom" parent="android:Theme.DeviceDefault.Dialog"> 
    <item name="DialogTitleAppearance">@android:style/TextAppearance.Medium</item> 
    <item name="DialogTitleText">Please Wait</item> 
    <item name="DialogSpotColor">@android:color/holo_orange_dark</item> 
    <item name="DialogSpotCount">8</item> 
</style> 

Wreszcie w kodzie to zrobić:

private AlertDialog progressDialog; 
progressDialog = new SpotsDialog(mContext, R.style.Custom); 

//Am using it in an AsyncTask. So in my onPreExecute, I do this: 
public void onPreExecute() { 
    super.onPreExecute(); 
    progressDialog.show(); 
    ... 
} 

//dismiss in onPostExecute 
public void onPostExecute(){ 
    progressDialog.dismiss(); 
} 

Wynik:

enter image description here

żółte kropki poruszać się od lewej do prawej i można zmienić liczbę kropek w stylach

+1

Czy istnieje sposób zmiany tła okna dialogowego alertu za pomocą tej biblioteki? –

+1

Tak. @GuruprasadRao sprawdź odpowiedź Khawara poniżej – Bawa

+1

' @ color/transparent' dodaj to jest styl – Bawa

2

Wystarczy sprawdzić, używając nazwy aktywności w konstruktorze okna postępów,

progressDialog = new ProgressDialog(Activity.this,R.style.CustomDialog); 
+1

Dziękuję najib za odpowiedź, ale to nie działa dla mnie ... –

12

wiem, że jestem dość późno, by odpowiedzieć, ale ja odpowiem w dowolny sposób,

Dialog dialog = new Dialog(this); 
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
dialog.setContentView(R.layout.dialog_login); 
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); 
1

Dodaj ten na styl

<item name="android:background">@android:color/transparent</item> 

<item name="android:windowBackground">@android:color/transparent</item> 
+2

Twoja odpowiedź wydaje się banalna. Prosimy bardziej opisać, co zamierzasz zrobić. – Athafoud

1

dodać go do CustomDialog w styles.xml:

<item name="android:alertDialogStyle">@style/CustomAlertDialogStyle</item> 

I to style:

<style name="CustomAlertDialogStyle" > 
    <item name="android:bottomBright">@android:color/transparent</item> 
    <item name="android:bottomDark">@android:color/transparent</item> 
    <item name="android:bottomMedium">@android:color/transparent</item> 
    <item name="android:centerBright">@android:color/transparent</item> 
    <item name="android:centerDark">@android:color/transparent</item> 
    <item name="android:centerMedium">@android:color/transparent</item> 
    <item name="android:fullBright">@android:color/transparent</item> 
    <item name="android:fullDark">@android:color/transparent</item> 
    <item name="android:topBright">@android:color/transparent</item> 
    <item name="android:topDark">@android:color/transparent</item> 
</style>