无法在progressBar中将progressDrawable居中显示在背景上



我正在尝试使用带有文本的图像创建一个progressBar(实际上,该图像是保存为png的文本徽标)。

我已经用两个图像创建了一个普通的进度条(一个灰色的作为背景,一个蓝色的作为进度条),它运行得很好。

<ProgressBar
android:id="@+id/pbLoading"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp"
android:layout_marginTop="130dp"
android:background="@drawable/grayloadingbar"
android:progress="@integer/loadingProgress"
android:progressDrawable="@drawable/custom_progress"
android:radius="0dp"
android:visibility="visible" />

这是custom_progress.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@android:id/progress">
<bitmap
android:gravity="center"
android:src="@drawable/blueloadingbar"
android:layout_height="fill_parent" />
<corners android:radius="0dp" />
</item>
</layer-list>

问题是,用其他图像(上面提到的文本徽标图像)替换这两个图像,这看起来不再好看了。

加载工作得很好,我可以看到进度,但进度条图像的大小是固定的,而背景src是可变的,这取决于显示,我可以自己调整大小,这是我无法为进度条做的。

这是XML:

<ProgressBar
android:id="@+id/pbLoading"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
android:layout_height="68dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp"
android:layout_marginTop="130dp"
android:background="@drawable/loading_bw"
android:minHeight="20dip"
android:mirrorForRtl="false"
android:progress="@integer/fullProgress"
android:progressDrawable="@drawable/custom_progress"
android:radius="0dp"
android:visibility="visible" />

客户进展

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@android:id/progress">
<bitmap
android:gravity="center"
android:src="@drawable/loading_color"
android:layout_width="fill_parent"
android:layout_height="90dp" />
<corners android:radius="0dp" />
</item>
</layer-list>

我无法向您显示图像,但整个进度条看起来像100%宽度&高度和25dp边距顶部&如果将背景图像的左上角作为参考点。

有什么想法吗?

我为此挖了很多坑,但到目前为止没有运气。

您可以将主题添加到进度条中,如下所示在进度条周围做一个布局,例如:relativeLayout将进度条放在其中,然后将此标记应用于布局。因此,现在有进度条的布局将被调整为对话框。

android:theme="@style/Theme.Dialog"

第二种方法

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();  
int height = display.getHeight();

应用上面的宽度/2和高度/2作为进度条的宽度和高度。

方法3

如果你想要以像素为单位的显示尺寸,你可以使用getSize:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

应用上面的宽度/2和高度/2作为进度条的宽度和高度。但由于这些尺寸将以像素为单位。因此,相应地调整它们。

注意:

方法3仅适用于ApiLevel:13及以上版本。

最新更新