سؤال

أرغب في عرض تراكب عجلة "عجلة" على رأيي.

يأتي ProgressDialog قريبا، لكنني لا أريد خلفية الحوار أو الحدود.

حاولت تحديد الخلفية الراسخة من نافذة الحوار:

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();

ولكن دون جدوى (أي ما زالت تبدو كما هي دون ... GroundBallwableDrawable).

هل كانت مفيدة؟

المحلول

هل راجعت هذا الدورة التعليميةب في نهاية الصفحة تتحدث عن كيفية إنشاء مربع حوار مخصص، وهذا قد يساعدك في وضع مربع حوار تقدم Spinner مع الخلفيات الخاصة بك.

نصائح أخرى

لست متأكدا مما إذا كانت هناك طريقة أفضل، ولكن يمكنك الحصول على عجلة سبينر بمفردها باستخدام شريط التقدم وإعدادها لتكون interdeteterminate. إذا كنت تستخدم Absolutelayout. يمكنك وضعه على وجهات النظر الأخرى. يجب أن يظهر هذا التصميم هذه الطريقة باستخدام 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>

من أجل إنشاء تقدم ملء الشاشة في خلفية مظلمة، أستخدم FRAMELAYOUT وتعيين رؤية RelativeDayout المرئي عند الاقتضاء أو ذهبت عند إجراء عملية طويلة:

<?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>

حل حل Klarth بالنسبة لي، شكرا!

في حالتي، استخدمت Layout_Gravity لوضع مركز التقدم - بدلا من استخدام الإحداثيات الصريحة.

    <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"
        />
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top