【问题标题】:Seekbar Progress Drawable Resizing different in API 22 vs API 23API 22 与 API 23 中的 Seekbar Progress Drawable 调整大小不同
【发布时间】:2016-08-04 15:53:41
【问题描述】:

我在我的 Android 应用程序中将这个 library 用于 VerticalSeekBars。在我的应用程序中,我使用LinearLayoutlayout_weight 属性水平放置了多个垂直搜索栏(大约10-15 个?)。此外,我正在使用应该大于进度的拇指(基本上位于进度之上)和用于进度的自定义可绘制对象:

<?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="10dp"
              android:gravity="center_vertical">
        <shape android:shape="rectangle">
             <corners android:radius="500dp"/>
             <solid android:color="#000000"/>
        </shape>
    </item>
</layer-list>

在 API 23(我相信是 Marshmallow?)上,所有内容都正确排列,并且可以在不同的屏幕尺寸上正确调整大小。惊人的。但是,在 API 22 及更低版本中,drawable 的进度不会自行调整;相反,它会增加它的大小以使搜索栏拇指适合进度。我试图在我的代码中调整可绘制对象的大小,但这仍然没有做任何事情。我把它画出来表明我的意思:

如何获得 API 22/below 以匹配 API 23 通过搜索栏实现的相同行为?

这是我的VerticalSeekBar 设置示例:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="1">

    <com.h6ah4i.android.widget.verticalseekbar.VerticalSeekBarWrapper
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:layout_weight="0.5">

            <com.h6ah4i.android.widget.verticalseekbar.VerticalSeekBar
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:max="100"
                android:progress="50"
                app:seekBarRotation="CW270"
                android:progressDrawable="@drawable/custom_track"
                android:splitTrack="false"/>

    </com.h6ah4i.android.widget.verticalseekbar.VerticalSeekBarWrapper>

           <com.h6ah4i.android.widget.verticalseekbar.VerticalSeekBarWrapper
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:layout_weight="0.5">

            <com.h6ah4i.android.widget.verticalseekbar.VerticalSeekBar
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:max="100"
                android:progress="50"
                app:seekBarRotation="CW270"
                android:progressDrawable="@drawable/custom_track"
                android:splitTrack="false"/>

    </com.h6ah4i.android.widget.verticalseekbar.VerticalSeekBarWrapper>

</LinearLayout>

谢谢!

【问题讨论】:

    标签: java android xml android-linearlayout android-seekbar


    【解决方案1】:

    这样设置maxHeight

    <com.h6ah4i.android.widget.verticalseekbar.VerticalSeekBar
            ...
            android:maxHeight="2dp"
            .../>
    

    【讨论】:

    • 这是正确答案...不敢相信我之前没有考虑过这个属性!当 21 小时结束时,+50 赏金就是你的了 ;)
    猜你喜欢
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多