【问题标题】:SeekBar changes Theme after Spinner item clicked单击 Spinner 项目后,SeekBar 更改主题
【发布时间】:2018-01-09 13:56:09
【问题描述】:

我使用自己的Spinner 和自定义的SeekBar。在 API 23 或更高版本上一切正常,但在低于 22 的 Android 上,它完全不起作用。 在 EditText Spinner 更改值处点击一个值并像魅力一样工作,更改 Spinner 选定值会更改 SeekBar 主题。 Spinner 上没有任何操作。

<SeekBar
    android:id="@+id/seekBarVolt"
    android:layout_width="0dp"
    android:layout_height="24dp"
    android:layout_weight="1"
    android:enabled="false"
    android:progressDrawable="@drawable/custom_seekbar"
    android:thumb="@drawable/custom_seekbar_thumb" />

点击微调器之前

点击微调器后

微调器代码:

public class FSSpinner extends AppCompatSpinner {

    public FSSpinner(Context context) {
        super(context);
    }

    public FSSpinner(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public FSSpinner(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    public void
    setSelection(int position, boolean animate) {
        boolean sameSelected = position == getSelectedItemPosition();
        super.setSelection(position, animate);
        if (sameSelected) {
            OnItemSelectedListener onItemSelectedListener = getOnItemSelectedListener();
            if (onItemSelectedListener != null) {
                onItemSelectedListener.onItemSelected(this, getSelectedView(), position, getSelectedItemId());
            }
        }
    }

    @Override
    public void
    setSelection(int position) {
        boolean sameSelected = position == getSelectedItemPosition();
        super.setSelection(position);
        if (sameSelected) {
            OnItemSelectedListener onItemSelectedListener = getOnItemSelectedListener();
            if (onItemSelectedListener != null) {
                onItemSelectedListener.onItemSelected(this, getSelectedView(), position, getSelectedItemId());
            }
        }
    }
}

搜索栏 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:gravity="center_vertical">
        <shape
            android:shape="rectangle"
            android:tint="#77C344">
            <size android:height="30dp" />
            <solid android:color="#77C344" />
        </shape>
    </item>
    <item
        android:id="@android:id/progress"
        android:gravity="center_vertical">
        <scale android:scaleWidth="100%">
            <selector>
                <item
                    android:drawable="@android:color/transparent"
                    android:state_enabled="false" />
                <item>
                    <shape
                        android:shape="rectangle"
                        android:tint="#77C344">
                        <size android:height="30dp" />
                        <solid android:color="#77C344" />
                    </shape>
                </item>
            </selector>
        </scale>
    </item>
</layer-list>

SeekBarThumb.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"
    android:thickness="4dp"
    android:tint="#000"
    android:useLevel="false">
    <solid android:color="#000" />
    <size
        android:width="12dp"
        android:height="32dp" />
</shape>

【问题讨论】:

    标签: android xml seekbar


    【解决方案1】:

    尝试从 Seekbar.xml 中删除以下内容,此处无需提及 state_enabled,因为您只有一个状态

    android:state_enabled="false"
    

    【讨论】:

    • 抱歉,还是有同样的问题。
    猜你喜欢
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 2014-05-05
    • 1970-01-01
    相关资源
    最近更新 更多