Android开发中Progress需要两边都是圆角怎么办?

这里的两边都是圆角,指的是progressbar的progress部分
比如,需要这个效果:

clipboard.png

如果使用shape,progress的右边是直角,所以使用了.9图
但是实际中,设置progress为10了之后(max为100),整体还是很宽,感觉像是progress属性不能用了

原始界面文件中的使用:

<ProgressBar
        android:id="@+id/live_channel_progres"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="112dp"
        android:layout_height="15dp"
        android:max="100"
        android:progress="10"
        android:progressDrawable="@drawable/progress_bg" />

progress的drawable:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
 
    <!-- 背景  gradient是渐变,corners定义的是圆角 -->
    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="30dp" />
 
            <solid android:color="#ff0" />
        </shape>
    </item>
    <!-- 进度条 -->
    <item android:id="@android:id/progress" android:drawable="@drawable/live_channel_progress"/>
    
 
</layer-list>
阅读 12k
2 个回答

解决了,我问题问的可能不清楚,导致有人理解错了,目前需求是:

需要progress的进度部分两边都是圆角

使用shape一开始就试过了,没用的
一楼的答案,我照搬试了下,跟我最开始的效果一样

使用.9图的话,可以规避这个问题,只需要把问题中:

<!-- 进度条 -->
    <item android:id="@android:id/progress" android:drawable="@drawable/live_channel_progress"/>

这部分改一下即可:

<!-- 进度条 -->
    <item android:id="@android:id/progress">
         <scale android:scaleWidth="100%"
               android:drawable="@drawable/live_channel_progress" />
    </item>

这是因为Progressbar在绘制的时候会clip一下,如果你指定了clip属性,右边肯定会被截成直角,所以要在item里使用scale,配合.9图就完美了。

http://stackoverflow.com/questions/2078809/progress-bar-rounded-on-both-sides-in-android

   <ProgressBar
          android:id="@+id/progressBar"
          android:layout_width="160dp"
          android:layout_height="7dp"
          style="@style/ProgressBar_Validity"
      />

style:

   <style name="ProgressBar_Validity" parent="@android:style/Widget.ProgressBar.Horizontal">
        <item name="android:indeterminateOnly">false</item>
        <item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item>
        <item name="android:progressDrawable">@drawable/progress_validity</item>
    </style>

progress_validity:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:id="@android:id/secondaryProgress">

        <clip >
            <shape >
                <corners android:radius="6dip" />
                <solid android:color="#EAEAEA"/>
            </shape>
        </clip>
    </item>

    <item android:id="@android:id/progress">
        <clip >
            <shape >
                <corners android:radius="6dip" />
                <solid android:color="#03A9F4"/>
            </shape>

        </clip>
    </item>
</layer-list> 

排版有问题 自己理一下。。亲测对的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏