2017-06-13 165 views
3

可繪製垂直對齊這是啥子我需要xmldrawable,以實現SeekBarenter image description here安卓:爲搜索欄

我嘗試了許多不同的變化,這是最好的,我可以做。

這是seekbar_thumb_drawable.xml

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval" > 

    <solid android:color="@color/accent_color"/> 

    <size 
     android:height="20dp" 
     android:width="20dp" /> 

</shape> 

這是seekbar_drawable.xml:上API 18

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item 
     android:id="@android:id/background" 
     android:height="5dp" 
     android:top="7.5dp"> 
     <shape 
      android:shape="rectangle"> 
      <solid android:color="@color/seekbar_background" /> 
      <corners android:radius="2.5dp" /> 
     </shape> 
    </item> 

    <item 
     android:id="@android:id/progress" 
     android:height="10dp" 
     android:top="5dp"> 
     <clip> 
      <shape 
       android:shape="rectangle"> 
       <solid android:color="@color/seekbar_progress" /> 
       <corners android:radius="5dp" /> 
      </shape> 
     </clip> 
    </item> 

</layer-list> 

結果: 問題是,線不verticaly居中。在API 24

enter image description here

結果: 這顯示到底我希望它顯示。

enter image description here

是否有任何可能的解決方案,使這個顯示爲從API 16所有設備的第一張照片?
我不想使用九補丁,因爲我需要從資源中使用顏色。 我試過paddinggravitytopbottominter-shapelinerectangle但我無法找到解決辦法...

回答

0

你可能面臨的已知問題,here是它的解決方案。您應該定義和minHeightSeekBar與其高度相同。或者,您甚至可以將maxHeight設置爲1000dp等大值,如果您將身高設置爲wrap_content,就像下面在同一主題中提到的答案中所述。

<SeekBar 
    android:thumb="@drawable/seekbar_thumb_drawable"   
    android:progressDrawable="@drawable/seekbar_drawable" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:maxHeight="1000dp" 
    <!-- OR --> 
    android:maxHeight="16dp" 
    android:minHeight="16dp"/> 
2

這是因爲<item>android:heightandroid:width僅適用於API 23以上。如果你在23以下的API中使用這些屬性,它不會給你一個錯誤,而是簡單地忽略它。

在你的情況下,android:height="5dp"android:height="10dp"沒有被應用。

如果你看看相關docs或者,它說,這些都是在API層面增加23

0

製作更新在你繪製的文件。

在seekbar_thumb_drawable.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:gravity="center"> 
     <shape android:shape="oval"> 

      <solid android:color="@color/accent_color" /> 

      <size 
       android:width="20dp" 
       android:height="20dp" /> 

     </shape> 
    </item> 
</layer-list> 

seekbar_drawable.xml:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item 
     android:id="@android:id/background" 
     android:height="5dp" 
     android:gravity="center"> 
     <shape android:shape="rectangle"> 
      <solid android:color="@color/seekbar_background" /> 
      <corners android:radius="2.5dp" /> 
     </shape> 
    </item> 

    <item 
     android:id="@android:id/progress" 
     android:height="10dp" 
     android:gravity="center"> 
     <clip> 
      <shape android:shape="rectangle"> 
       <solid android:color="@color/seekbar_progress" /> 
       <corners android:radius="5dp" /> 
      </shape> 
     </clip> 
    </item> 

</layer-list> 

我米使用項目的重力,讓繪製項目在中心畫。

0

,我也面臨着同樣的問題在低API來行因此,我所做的上面拇指提拉

<SeekBar 
    android:id="@+id/seekbar_transparency" 
    android:layout_width="match_parent" 
    android:layout_height="40dp" 
    android:paddingTop="@dimen/seekbar_thumb_size_space" 
    android:paddingBottom="@dimen/seekbar_thumb_size_space" 
    android:progress="100" 
    android:theme="@style/SeekbarTheme" 
    android:thumb="@drawable/thumb_drawable" /> 

style.xml

<!--Seekbar background change--> 
<style name="SeekbarTheme" parent="Theme.AppCompat.Light"> 
    <!-- active seekbar progress track color --> 
    <item name="colorControlActivated">@color/colorSeekBar</item> 
    <!-- inactive seekbar progress track color --> 
    <item name="colorControlNormal">@color/colorGray</item> 
</style> 

thumb_drawable.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:bottom="2.5dp" 
     android:left="2.5dp" 
     android:right="2.5dp" 
     android:top="2.5dp"> 

     <shape android:shape="rectangle"> 
     <size 
     android:width="@dimen/seekbar_thumb_size" 
     android:height="@dimen/seekbar_thumb_size" /> 
     <corners android:radius="20dp" /> 
     <solid android:color="#201DE9B6" /> 
     </shape> 
    </item> 

    <item 
     android:bottom="10dp" 
     android:left="10dp" 
     android:right="10dp" 
     android:top="10dp"> 

     <shape android:shape="rectangle"> 
      <size 
       android:width="@dimen/seekbar_thumb_size" 
       android:height="@dimen/seekbar_thumb_size" /> 
      <corners android:radius="20dp" /> 
      <solid android:color="#AA1DE9B6" /> 
     </shape> 
    </item> 
</layer-list> 

dimes.xml

<!--Seeckbar thumb size--> 
<dimen name="seekbar_thumb_size">10dp</dimen> 
<dimen name="seekbar_thumb_size_space">5dp</dimen> 
0
<SeekBar 
    android:id="@+id/seek_bar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:maxHeight="3dp" 
    android:minHeight="3dp" 
    android:progressDrawable="@drawable/nnl_bg_seek_bar_progress" 
    android:splitTrack="false" 
    android:thumb="@drawable/nnl_sel_seek_bar_thumb" 
    tools:ignore="UnusedAttribute" 
    /> 

上面的代碼是我的WA年。您可能需要注意以下屬性:maxHeight/minHeight/splitTrack。