Android: 使自定义搜索栏不透明

Android: Make custom seekbar opaque

嗨,谁能告诉我为什么我的 Seekbar 的背景和进度总是有一些不透明,即使我将 alpha 设置为 1.0 也无法删除。下面是我的progress_drawable.xml

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

<item android:id="@android:id/background">
    <shape>
        <corners android:radius="5dip" />
        <gradient
            android:alpha="1.0"
            android:startColor="#000000"
            android:endColor="#000000"/>

    </shape>
</item>

<item android:id="@android:id/secondaryProgress">
    <clip>
        <shape>
            <corners android:radius="5dip" />
            <gradient
                android:alpha="1.0"
                android:startColor="#000000"
                android:endColor="#000000" />
        </shape>
    </clip>
</item>

<item android:id="@android:id/progress">
    <clip>
        <shape>
            <corners android:radius="5dip" />
            <gradient
                android:alpha="1.0"
                android:endColor="#2e2dff"
                android:startColor="#2e2dff" />
            <solid android:color="#2e2dff" />
        </shape>
    </clip>
</item>

这是 activity 中的 SeekBar 标签 xml:

<SeekBar
    android:padding="0dp"
    android:id="@+id/normalSeekbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/imgPenguin"
    android:alpha="1"
    android:progress="0"
    android:progressDrawable="@drawable/progress_drawable"
    android:secondaryProgress="0" />

我得到了这个 result 但我希望条形不透明,请提前告知并感谢。

刚刚发现问题:

normalSB.setEnabled(false);

我不应该使用 setEnabled(false) 来避免用户拖动拇指,相反,我这样做是为了在 fromUser == true:

时重置进度
normalSB.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

        int originalProgress;

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

            float seekBarStarting = seekBar.getX();
            float seekBarWidth = seekBar.getWidth();
            float seekBarOffset = seekBar.getThumbOffset();
            float ratio = (float) progress / seekBar.getMax(); 
            float scaledProgress = ratio * seekBarWidth;

            if (scaledProgress > imgPenguin.getWidth()) {
                imgPenguin.setX(seekBarStarting - imgPenguin.getWidth() + scaledProgress);
            }

            if (fromUser == true) {
                seekBar.setProgress(originalProgress);
            }

        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            originalProgress = seekBar.getProgress();
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
        }
    });