Maison  >  Questions et réponses  >  le corps du texte

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

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

如果使用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>
怪我咯怪我咯2720 Il y a quelques jours891

répondre à tous(2)je répondrai

  • PHP中文网

    PHP中文网2017-04-17 15:08:28

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

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

    répondre
    0
  • 迷茫

    迷茫2017-04-17 15:08:28

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

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

    répondre
    0
  • Annulerrépondre