【问题标题】:How to add initial padding to progress bar by java code如何通过java代码将初始填充添加到进度条
【发布时间】:2012-01-26 11:16:01
【问题描述】:

我想将初始填充添加到进度条,但这将是动态的,因为我正在从本地数据库中检索初始填充的值。

我已经用 layer-list xml 文件设置了进度条的背景。 `

    <corners android:radius="7dip" />

    <gradient  
            android:startColor="@color/background_start"  
            android:centerColor="@color/background_center"  
            android:centerY="0.75"  
            android:endColor="@color/background_end"  
            android:angle="270"  />  
     <stroke 
            android:color="@color/stroke"
            android:width="0.5dip"/> 
</shape>


        <corners android:radius="7dip" />
        <gradient  
                android:startColor="@color/secondory_progress_start"  
                android:centerColor="@color/secondory_progress_center"  
                android:centerY="0.75"  
                android:endColor="@color/secondory_progress_end"  
                android:angle="270"  />
           <stroke 
            android:color="@color/stroke"
            android:width="0.5dip"/>  
    </shape> 
 </clip> 


        <corners  
            android:radius="7dip" /> 

         <padding android:left="360dip" 
             android:right="50dip"/>
        <gradient  
                android:startColor="@color/default_progress_start"  
                android:centerColor="@color/default_progress_center"
                android:centerY="0.75"  
                android:endColor="@color/default_progress_end"  
                android:angle="270"  
        />  
         <stroke 
            android:color="@color/stroke"
            android:width="0.5dip"/> 
    </shape> 
   </clip> 

在 java 代码中,我引用的是 xml 文件,如下所示:

layerDrawable = (LayerDrawable)progressBar.getProgressDrawable();

并像这样检索简单的进度子项: Drawable drawable = layerDrawable.getDrawable(layerDrawable.getId(2)); 因为它位于 xml 文件的第二级。

我将最大值和进度值设置为进度条。现在我想为进度条的进度值添加一些左填充。我使用 setBounds 方法尝试过这样的:

`Rect rect = new Rect();

rect = drawable.getBounds();

rect.left = drawable.getBounds().left + getPaddingForFirstPeriod() + 300; rect.right = rect.left + (int) 50; drawable.setBounds(rect);`

但它对进度条的主要进度值没有任何影响,除此之外没有可用的填充方法。

请帮忙

【问题讨论】:

    标签: android padding android-progressbar shapedrawable


    【解决方案1】:

    老类型View.setPadding(l,t,r,b) 没有帮助了吗?

    【讨论】:

    • 这不是简单的视图,它是一个可绘制/可剪辑的 :(
    • 不幸的是,我也在尝试设置边界,drawable.setBounds(100, 0, 300, 0);虽然它没有任何效果。
    • progressBar 对象实例化了什么类?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    相关资源
    最近更新 更多