我在我的Android应用程序(API8)中使用android SeekpBar
我想将它的颜色改为蓝色。
但现在颜色取决于设备型号。
有没有办法让它一直变蓝?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:id="@+id/settingsSeekbarMain">
<SeekBar
android:id="@+id/settingsSeekbarBar"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_gravity="center_vertical|right"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
/>
</LinearLayout>
答案 0 :(得分:0)
您需要为SeekBar
创建一个具有不同进度的自定义样式。
将文件android-sdk-root \ platforms \ android-8 \ data \ res \ drawable \ progress_horizontal.xml复制到drawable文件夹中。根据您的需要改变颜色。
在styles.xml中,创建一个使用自定义背景drawable的自定义样式:
<style name="CustomSeekbarStyle" parent="@android:style/Widget.SeekBar">
<item name="android:progressDrawable">@drawable/custom_progress_horizontal</item>
</style>
要使用自定义样式,请为应用程序中的每个SeekBar明确设置,如下所示:
<SeekBar
android:layout_width="match_parent"
style="@style/CustomSeekbarStyle"
android:progress="50"
android:layout_height="wrap_content" />
或者在应用程序主题中全局设置样式:
<style name="AppBaseTheme" parent="android:Theme.Light">
<item name="android:seekBarStyle">@style/CustomSeekbarStyle</item>
</style>
编辑1:如果您的应用程序在较新的设备上使用较新的主题(即ICS设备上的holo-theme),则应考虑覆盖所有相关API级别的progress_horizontal文件。创建多个drawable-vXX文件夹(即GB的drawable-v10,ICS的drawable-v14)并将修改后的progress_horizontal.xml文件放入这些文件夹中。您也可以在Android SDK中找到这些文件。
编辑2:然而,这个解决方案没有一个有点严重的缺陷:设备供应商喜欢为他们的Android固件创建自定义主题,通常涉及不同的drawables和颜色。使用上述方法,将覆盖这些自定义样式,从而可能导致用户界面不一致。