我正在尝试使用自定义主题显示进度条。但它是在左上角而不是中心。如果我不使用自定义主题,它将显示在中心但不是全屏,它会在背景中显示文本视图和其他看起来很糟糕的元素。以下是代码和截图
自定义主题:
<?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);
当我单独看到进度条主题的预览时,它会正确显示如下。但在活动中,它显示在错误的位置。
答案 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" />
然后您可以使用填充更改进度条的大小。填充越大,尺寸越小。 而且您不必添加布局来包裹进度条。