Android 实现垂直进度条时出现错误

Android 实现垂直进度条时出现错误,android,progress-bar,Android,Progress Bar,我通过扩展ProgressBar类实现了一个垂直进度条。一切都很好,除了它清除了一个大的矩形区域,我不打算 我的主布局xml中进度条的定义为: <info.realjin.someapp.view.VerticalProgressBar android:id="@+id/progressbar1" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_ma

我通过扩展ProgressBar类实现了一个垂直进度条。一切都很好,除了它清除了一个大的矩形区域,我不打算

我的主布局xml中进度条的定义为:

<info.realjin.someapp.view.VerticalProgressBar
    android:id="@+id/progressbar1" android:layout_width="wrap_content"
    android:layout_height="fill_parent" android:layout_marginTop="50dip"
    style="@style/Widget.ProgressBar.RegularProgressBar" />

xml的样式是:

<style name="Widget"></style>

<style name="Widget.ProgressBar">
    <item name="android:indeterminateOnly">true</item>
    <item name="android:indeterminateBehavior">repeat</item>
    <item name="android:indeterminateDuration">3500</item>
    <item name="android:minWidth">4dip</item>
    <item name="android:maxWidth">40dip</item>
    <item name="android:minHeight">4dip</item>
    <item name="android:maxHeight">400dip</item>
</style>

<style name="Widget.ProgressBar.RegularProgressBar">
    <item name="android:indeterminateOnly">false</item>
    <item name="android:progressDrawable">@drawable/newsprogressbar</item>
    <item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item>
    <item name="android:minHeight">1dip</item>
    <item name="android:maxHeight">400dip</item>
</style>

真的
重复
3500
4dip
40度
4dip
400度
假的
@可抽拉/新闻栏
@android:可绘制/进度\不确定\水平
1dip
400度

据我所知,在水平进度条(官方进度条)定义中,“android:layout\u width”属性应该是“fill\u parent”,而“android:layout\u height”属性应该是“wrap\u content”。在我的垂直进度条定义中,我必须如上所述反向定义这两个属性,以获得良好的进度条函数。但如果我这样做,进度条顶部和底部之间的所有视图都将被清除,正如我在开头提到的那样。我怎样才能避免呢


顺便说一句,我做了一个实验——即使垂直进度条类扩展了官方进度条类,但没有覆盖任何方法,该区域也会被清除。

我不久前写了一篇关于这方面的教程。 请随意使用它作为您自己代码的灵感


如果不进一步查看,我怀疑您的视图在onMeasure中报告了错误的测量值。

您提供了这么多详细信息!我想我应该按照你的教程重写自定义视图并学习其中的机制,否则我会花很多时间调试我的旧程序,而什么也没学到——事实上,我刚刚合并了两个教程(一个是时尚进度条,另一个是垂直进度条,因为我想要时尚的垂直进度条),但我不知道进度条中的机制。