java - API 22 与 API 23 中的 Seekbar Progress Drawable 调整大小不同

标签 java android xml android-linearlayout android-seekbar

我正在使用这个 library对于我的 Android 应用程序中的 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(我认为是棉花糖?)上,所有内容都正确排列并在不同的屏幕尺寸上正确调整大小。惊人的。但是,在 API 22 及以下版本中,进度可绘制对象不会自行调整;相反,它增加了它的大小以使搜索栏拇指适合进度。我试图在我的代码中调整可绘制对象的大小,但仍然没有任何作用。我把它画出来以表明我的意思:

Picture example - excuse my poor drawing skills :(

如何让 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>

谢谢!

最佳答案

像这样设置 maxHeight:

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

关于java - API 22 与 API 23 中的 Seekbar Progress Drawable 调整大小不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38772087/

相关文章:

java - 在 Java Scanner 中分割数据文件

java - 如何在 fragment 而不是 Activity 中使用 NavController(在 fragment 中带有 NavHost)?

android - 在不使用 Scrollview 的情况下使 Linearlayout 可滚动

c++ - 使用cpp在opencv中的xml文件中追加元素

java - 可以将 SAP JCo 连接器与 SCALA 一起使用吗?

java - 将 XML block 插入到 Java 中的现有 XML 文件中

Android 5.0 Lollipop - Nexus 10 重启和未检测到 USB 调试?

java - 单击时显示对话框首选项

java - 将 XML 从 Java 发送到 MSMQ - bodyType 从 VT_EMPTY 到 VT_BSTR

java - 无法使用 Jackson 处理 JAXB 注释