【问题标题】:Cannot center progressDrawable over background in progressBar无法在progressBar的背景上居中progressDrawable
【发布时间】:2014-02-21 07:51:22
【问题描述】:

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

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

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

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

加载工作正常,我可以看到进度,但进度条图像接缝具有固定大小,而背景 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" />

还有custom_progress

<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 的顶部和左侧边距。

有什么想法吗?

我一直在为此挖掘很多东西,但到目前为止没有运气。

【问题讨论】:

  • 那么总结一下,您需要将进度条居中吗?
  • 有点。这个想法是让机器人图像一个在另一个之上,以便蓝色图像逐渐出现,使用户认为图像上的灰色文本逐渐变成蓝色。

标签: java android xml progress-bar graphical-logo


【解决方案1】:

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

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

第二种方法

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

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

方法3

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

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

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

注意:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-13
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多