Android:如何在中心显示全屏进度条

时间:2017-02-27 15:37:36

标签: android android-layout

我正在尝试使用自定义主题显示进度条。但它是在左上角而不是中心。如果我不使用自定义主题,它将显示在中心但不是全屏,它会在背景中显示文本视图和其他看起来很糟糕的元素。以下是代码和截图

自定义主题:

<?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
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true" />

</RelativeLayout>

在活动初始​​化进度对话框中使用自定义主题:

progressBar = new ProgressDialog(context, R.layout.layout_progress_dialog);
progressBar.setMessage("Please wait...");
progressBar.setCancelable(false);

enter image description here

当我单独看到进度条主题的预览时,它会正确显示如下。但在活动中,它显示在错误的位置。

enter image description here

4 个答案:

答案 0 :(得分:2)

您正在构造函数中传递布局的id,该构造函数需要主题的id。

progressBar = new ProgressDialog(context, R.layout.layout_progress_dialog);

构造函数是

public ProgressDialog(Context context, int theme) 

您应该在style.xml中定义自定义属性,并在此处传递该样式的ID。

答案 1 :(得分:1)

您可以使用<include/>标记将进度条添加到活动的布局中并设置其位置。如果您的自定义样式为customProgressDialog.xml

<include
    layout="@layout/customProgressDialog"
    android:id="@+id/customProgressDialog"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
/>

然后在你的活动中:

ProgressDialog dialog = (ProgressDialog) findViewById(R.id.customProgressDialog);

答案 2 :(得分:0)

尝试设置android:layout_centerHorizontal="true"android:layout_centerVertical="true"

答案 3 :(得分:0)

也许是一个更简洁的解决方案。

    <ProgressBar
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="your_desire_value"
        android:background="your_background_color" />

然后您可以使用填充更改进度条的大小。填充越大,尺寸越小。 而且您不必添加布局来包裹进度条。