【问题标题】:Unable to programmatically change width of horizontal progressbar无法以编程方式更改水平进度条的宽度
【发布时间】:2010-05-26 05:54:42
【问题描述】:

我想以编程方式更改水平进度条的宽度(初始大小在 XML 中使用 RelativeLayout 设置...但我想根据某些值动态更改它)。

我已经在我的代码中尝试了 setMinimumWidth(50),但这并没有什么不同。我也尝试过设置'android:layout_width="wrap_content",但这也不起作用。

这是我的 XML:

<ProgressBar android:id="@+id/progress_horizontal"
     style="?android:attr/progressBarStyleHorizontal"
     android:layout_width="100dip"
     android:layout_height="wrap_content" 
/>

提前感谢您的帮助!

【问题讨论】:

    标签: android


    【解决方案1】:

    ProgressBar 的布局是什么?这会影响 layout_width 和 height 的解释方式。

    但是,我认为您看到了 View 的宽度和 layout_width 之间的冲突。每次渲染视图时,它的首选大小是根据其上设置的 minWidth、width 等确定的。然后,视图所在的布局可以根据 layout_width 信息更新要渲染的实际大小。有关两阶段过程的更多信息,请参阅 How Android Draws ViewsView 大小文档。

    在您的情况下,您将 layout_width 设置为 100,最小宽度设置为 50,所以我认为它总是显示 100。

    尝试将 layout_width 设置为 wrap_content,然后更新 ProgressBar 的首选宽度。

    【讨论】:

    • 感谢您的快速回复!我正在使用RelativeLayout(见下文)。我确实将 XML 中的 layout_width 更改为 wrap_content,但这并没有产生影响(进度条似乎保持在固定大小 - 相对较小 - 无论我将 setMinimumWidth 更改为什么。我将查看您提供的文档链接schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@颜色/背景">
    • 您可以编辑您的原始帖子,以更易读的方式提供额外的 RelativeLayout 信息!可能有助于包含整个布局,因为使用 RelativeLayouts 布局中的各种视图会相互影响。
    【解决方案2】:

    我想当你给它一个初始值 100 时会满足 setmindwidth。系统会重新识别它超过 50,然后继续按照它所告知的其余部分执行操作。尝试将最小宽度设置为 150,将 xml 设置为初始值 75,然后在 onCreate 中触发 Log.d("progbar", String.valueOf(myprogress.width));

    免责声明 - 写在没有开发环境的工作电脑前供参考。

    【讨论】:

    • 感谢您的快速回复。我将 xml 更改为 layout_width 的 75dip。然后我 setMinimumWidth(200) 并重新运行。不幸的是,这不起作用(即,没有增加条的大小)。当我在 setMinimumWidth(200) 之前和日志信息相同之后运行 Log.d("progbar", String.valueOf(myprogress.getWidth())) 时 - "D/progbar (565): 0"跨度>
    猜你喜欢
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多