寻求酒吧进展Drawable扩展

时间:2018-04-08 07:26:54

标签: android seekbar

嗨我想制作看起来像这样的Custom Seek Bar enter image description here

这个形状出现在Android Studio上

但是当它在手机上运行时,它看起来像这样

enter image description here

这是我的代码

XML中的

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <SeekBar
            android:id="@+id/seekBar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:max="10000"
            android:progress="500"
            android:progressDrawable="@drawable/custom_seekbar"
            android:thumb="@drawable/thumb_transperent"
            />
    </LinearLayout>

其中 @ drawable / custom_seekbar

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Define the background properties like color etc -->

    <item android:id="@android:id/background">
        <rotate>
            <layer-list>
                <item android:drawable="@drawable/progress_bar"/>
            </layer-list>
        </rotate>
    </item>

    <!-- Define the progress properties like start color, end color etc -->
    <item android:id="@android:id/progress">
        <clip>
            <layer-list>
                <item android:drawable="@drawable/progressbar_progress"/>
            </layer-list>
            </clip>
    </item>
</layer-list>

@ drawable / progress_bar

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:top="15dp">
        <shape android:shape="line">
            <stroke android:color="@color/black"
                android:width="5dp"/>
            <solid android:color="@android:color/transparent" />
        </shape>
    </item>

    <item
        android:bottom="25dp"
        android:left="0dp"
        android:right="100dp"
        android:gravity="left"

        android:drawable="@drawable/test_small">

    </item>
    <item
        android:left="50dp"
        android:right="50dp"
        android:bottom="25dp"
        android:gravity="center"

        android:drawable="@drawable/test_meduim">

    </item>
    <item
        android:left="100dp"
        android:bottom="25dp"
        android:gravity="right"
        android:drawable="@drawable/test_large">

    </item>
</layer-list>

progressbar_progress

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

            <solid android:color="@android:color/transparent" />
            <stroke android:color="@color/red" android:width="3dp"/>
        </shape>
    </item>

    <item
        android:bottom="25dp"
        android:gravity="left"
        android:width="19dp"
        android:height="19dp"
        android:drawable="@drawable/test_small">

    </item>

    <item
        android:gravity="center"
        android:right="12dp"
        android:bottom="25dp"
        android:width="19dp"
        android:height="19dp"
        android:drawable="@drawable/test_meduim">

    </item>
    <item
        android:bottom="25dp"
        android:gravity="right"
        android:width="19dp"
        android:height="19dp"
        android:drawable="@drawable/test_large">

    </item>
</layer-list>

可以任何一个人解决这个问题,或者告诉我,我尝试了什么错误的事情很多事情并没有奏效 并且诅咒你

1 个答案:

答案 0 :(得分:4)

缩放图像(API 23中添加了widthheight属性)。为避免这种情况,您可以添加<bitmap/>元素。

e.g。替换:

<item
    android:width="19dp"
    android:height="19dp"
    android:bottom="25dp"
    android:drawable="@drawable/test_small"
    android:gravity="left">

</item>

with:

<item
    android:bottom="25dp">
    <bitmap
        android:gravity="left"
        android:src="@drawable/test_small" />
</item>

请注意,gravity元素位于bitmap元素上。 诀窍解释为here

  

缩放所有可绘制项目以适合包含视图的大小,   默认情况下。因此,将图像放在不同的图层列表中   位置可能会增加视图的大小,一些图像缩放为   适当。 要避免缩放列表中的项目,请使用<bitmap>   元素内部的元素指定drawable和define   重力到不能缩放的东西,例如&#34; center&#34;