2017-06-13 74 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。