0

我在我的Android應用程序中實現了水平不確定進度條。我正在構建和運行棒棒糖(v22)上的應用程序,因此使用它們的樣式。Android水平不確定進度條棒棒糖

<ProgressBar 
    android:id="@+id/progressBar1" 
    style="?android:attr/progressBarStyleHorizontal" 
    android:indeterminateOnly="true" 
    android:layout_width="15dp" 
    android:layout_height="wrap_content" /> 

的視圖的高度似乎是所請求的15dp,但其中所包含的動畫進度條的高度似乎是一個固定的高度(〜2DP)。是否有可能改變水平不確定進度條的高度(例如視圖的match_parent)?

我發現引用的樣式是android.R.styleable.ProgressBar_indeterminateOnly。我相信這在中引用了一個叫做progress_indeterminate_horizontal_material.xml的可繪製對象。這反過來引用vector_drawable_progress_indeterminate_horizontal.xml

<vector xmlns:android="http://schemas.android.com/apk/res/android" 
    android:height="10dp" 
    android:width="360dp" 
    android:viewportHeight="10" 
    android:viewportWidth="360" > 
    <group 
     android:name="progress_group" 
     android:translateX="180" 
     android:translateY="5" > 
     <path 
      android:name="background_track" 
      android:pathData="M -180.0,-1.0 l 360.0,0 l 0,2.0 l -360.0,0 Z" 
      android:fillColor="?attr/colorControlActivated" 
      android:fillAlpha="?android:attr/disabledAlpha"/> 
     <group 
      android:name="rect2_grp" 
      android:translateX="-197.60001" 
      android:scaleX="0.1" > 
      <path 
       android:name="rect2" 
       android:pathData="M -144.0,-1.0 l 288.0,0 l 0,2.0 l -288.0,0 Z" 
       android:fillColor="?attr/colorControlActivated" /> 
     </group> 
     <group 
      android:name="rect1_grp" 
      android:translateX="-522.59998" 
      android:scaleX="0.1" > 
      <path 
       android:name="rect1" 
       android:pathData="M -144.0,-1.0 l 288.0,0 l 0,2.0 l -288.0,0 Z" 
       android:fillColor="?attr/colorControlActivated" /> 
     </group> 
    </group> 
</vector> 

我已經添加了這些和他們的要求,我的項目,並開始與向量玩,但到目前爲止,我無法得到進度條出現在正確的大小。

調整高度,viewportHeight,平移Y和pathData:

<vector xmlns:android="http://schemas.android.com/apk/res/android" 
    android:height="5dp" 
    android:width="360dp" 
    android:viewportHeight="5" 
    android:viewportWidth="360" > 
    <group 
     android:name="progress_group" 
     android:translateX="180" 
     android:translateY="2.5" > 
     <path 
      android:name="background_track" 
      android:pathData="M -180.0,-2.5 l 360.0,0 l 0,5.0 l -360.0,0 Z" 
      android:fillColor="?attr/colorControlActivated" 
      android:fillAlpha="?android:attr/disabledAlpha"/> 
     <group 
      android:name="rect2_grp" 
      android:translateX="-197.60001" 
      android:scaleX="0.1" > 
      <path 
       android:name="rect2" 
       android:pathData="M -144.0,-2.5 l 288.0,0 l 0,5.0 l -288.0,0 Z" 
       android:fillColor="?attr/colorControlActivated" /> 
     </group> 
     <group 
      android:name="rect1_grp" 
      android:translateX="-522.59998" 
      android:scaleX="0.1" > 
      <path 
       android:name="rect1" 
       android:pathData="M -144.0,-2.5 l 288.0,0 l 0,4.0 l -288.0,0 Z" 
       android:fillColor="?attr/colorControlActivated" /> 
     </group> 
    </group> 
</vector> 

看上去只有權在預覽,但建當進度條沒有出現。

+0

您的主題是否定義了'?attr/colorControlActivated'?當它在框架中使用時,它隱式命名爲'?android:attr/colorControlActivated'。在將文件包含在應用程序中時,您可能需要將此值顯式命名爲'android:',否則它將假定您的應用程序的名稱空間。 – alanv

回答

0

正如@alanv所建議的,我差不多在那裏。你可以使用上面寫的方法來調整大小,只是不要忘記包含顏色!

<vector xmlns:android="http://schemas.android.com/apk/res/android" 
    android:height="5dp" 
    android:width="360dp" 
    android:viewportHeight="5" 
    android:viewportWidth="360" > 
    <group 
     android:name="progress_group" 
     android:translateX="180" 
     android:translateY="2.5" > 
     <path 
      android:name="background_track" 
      android:pathData="M -180.0,-2.5 l 360.0,0 l 0,5.0 l -360.0,0 Z" 
      android:fillColor="@color/my_color" 
      android:fillAlpha="?android:attr/disabledAlpha"/> 
     <group 
      android:name="rect2_grp" 
      android:translateX="-197.60001" 
      android:scaleX="0.1" > 
      <path 
       android:name="rect2" 
       android:pathData="M -144.0,-2.5 l 288.0,0 l 0,5.0 l -288.0,0 Z" 
       android:fillColor="@color/my_color" /> 
     </group> 
     <group 
      android:name="rect1_grp" 
      android:translateX="-522.59998" 
      android:scaleX="0.1" > 
      <path 
       android:name="rect1" 
       android:pathData="M -144.0,-2.5 l 288.0,0 l 0,4.0 l -288.0,0 Z" 
       android:fillColor="@color/my_color" /> 
     </group> 
    </group> 
</vector>