搜尋

首頁  >  問答  >  主體

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>
怪我咯怪我咯2769 天前916

全部回覆(2)我來回復

  • 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

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

    排版有問題 自己理一下。 。親測對的。

    回覆
    0
  • 取消回覆