【问题标题】:how to set background image for progress dialog?如何为进度对话框设置背景图像?
【发布时间】:2013-02-14 11:52:18
【问题描述】:

我是 Android 新手..

在我的应用程序中,我使用了一个进度对话框。我想为进度对话框设置背景图像。我该如何实现?

protected void onPreExecute() {
    super.onPreExecute();
    pDialog = new ProgressDialog(FrontActivity.this);
    pDialog.setMessage("Loading Grades. Please wait...");
    pDialog.setIndeterminate(false);
    pDialog.setCancelable(false);
    pDialog.show();
}

【问题讨论】:

    标签: android background progressdialog


    【解决方案1】:

    这是我的自定义进度对话框布局:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/LinearLayout"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_gravity="center"
        android:background="@layout/custom_rounded_box"
        android:orientation="vertical" >
    
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight=".6"
        android:orientation="horizontal" >
    
        <ProgressBar
            android:id="@+id/progress"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical|center_horizontal"
            android:indeterminateDrawable="@drawable/progress_background" />
    
        <TextView
            android:id="@+id/dialogTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight=".3"
            android:gravity="center_horizontal|center_vertical"
            android:text=""
            android:textSize="22sp"
            android:textStyle="bold" />
    
        <ProgressBar
            android:id="@+id/progress"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_weight=".05"
            android:background="@android:color/black"
            android:indeterminateDrawable="@drawable/progress_background"
            android:visibility="invisible" />
      </LinearLayout>
    
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:orientation="vertical" >
    
        <ImageView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/light_gray_line" >
        </ImageView>
    
        <TextView
            android:id="@+id/dialogMessage"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_below="@+id/dialogTitle"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:gravity="center_vertical"
            android:maxLines="10"
            android:padding="10dip"
            android:scrollbars="vertical"
            android:text=""
            android:textSize="18sp" >
        </TextView>
    </LinearLayout>
    
    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_weight=".6" >
    
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:orientation="horizontal" >
    
            <Button
                android:id="@+id/OkButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/dialogMessage"
                android:layout_centerHorizontal="true"
                android:layout_marginLeft="10dip"
                android:layout_marginRight="10dp"
                android:background="@drawable/ok_btn" >
            </Button>
    
            <Button
                android:id="@+id/cancelButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/dialogMessage"
                android:layout_centerHorizontal="true"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dip"
                android:background="@drawable/cancel_btn" />
        </LinearLayout>
        </RelativeLayout>
    
      </LinearLayout>` 
    

    这是我的自定义对话框类

        public class CustomizeDialog extends Dialog implements OnClickListener {
    Button okButton;
    Context mContext;
    TextView mTitle = null;
    TextView mMessage = null;
    View v = null;
    Button cancelButton;
    ProgressBar progressBar;
    
    public CustomizeDialog(Context context) {
        super(context);
        mContext = context;
        /** 'Window.FEATURE_NO_TITLE' - Used to hide the mTitle */
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        /** Design the dialog in main.xml file */
        setContentView(R.layout.custom_dialog_box);
        v = getWindow().getDecorView();
        v.setBackgroundResource(android.R.color.transparent);
        mTitle = (TextView) findViewById(R.id.dialogTitle);
        mMessage = (TextView) findViewById(R.id.dialogMessage);
        okButton = (Button) findViewById(R.id.OkButton);
        cancelButton = (Button) findViewById(R.id.cancelButton);
        cancelButton.setOnClickListener(this);
        okButton.setOnClickListener(this);
        progressBar = (ProgressBar) findViewById(R.id.progress);
    
    }
    
    @Override
    public void setTitle(CharSequence title) {
        super.setTitle(title);
        mTitle.setText(title);
    }
    
    @Override
    public void setTitle(int titleId) {
        super.setTitle(titleId);
        mTitle.setText(mContext.getResources().getString(titleId));
    }
    
    /**
     * Set the message text for this dialog's window.
     * 
     * @param message
     *            - The new message to display in the title.
     */
    public void setMessage(CharSequence message) {
        mMessage.setText(message);
        mMessage.setMovementMethod(ScrollingMovementMethod.getInstance());
    }
    
    /**
     * Set the message ID
     * 
     * @param messageId
     */
    public void setMessage(int messageId) {
        mMessage.setText(mContext.getResources().getString(messageId));
        mMessage.setMovementMethod(ScrollingMovementMethod.getInstance());
    }
    
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
    
    }
    

    }

    您可以通过传递标题和消息在任何 Activity 中使用它

    mCustomizeDialog = new CustomizeDialog(myActivity.this);
     mCustomizeDialog.setTitle("Title");
     mCustomizeDialog.setMessage("Message");
     mCustomizeDialog.okButton.setOnClickListener(new OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                mCustomizeDialog.dismiss();
                     });
    mCustomizeDialog.show();
    

    希望对你有帮助:)

    【讨论】:

      【解决方案2】:

      您可以使用自定义布局进行进度

        <?xml version="1.0" encoding="utf-8"?>
       <RelativeLayout
       xmlns:android="http://schemas.android.com/apk/res/android"
       android:orientation="vertical"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
      >
      
       <RelativeLayout 
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:background="@drawable/progress_backgroundimage"
       android:layout_centerInParent="true"
       android:padding="10dip">
      
                    <ProgressBar android:id="@+id/progress_bar"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    />
      
                    <TextView  android:id="@+id/text_message"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_toRightOf="@+id/progress_bar"
                    android:text="Loading Please wait..."
                    android:textSize="10dip"
                     android:layout_centerVertical="true"
                     android:layout_margin="10dip"/>
       </RelativeLayout>
      

      【讨论】:

        【解决方案3】:

        试试这个:

        这个带有背景的进度对话框希望对你有帮助

        Change background of ProgressDialog

        【讨论】:

          【解决方案4】:

          How can I change the background of Android alert dialogs?

          我认为这同样适用于 progressdialog。

          【讨论】:

            猜你喜欢
            • 2013-03-09
            • 1970-01-01
            • 2015-09-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-07-08
            • 2014-06-23
            相关资源
            最近更新 更多