我可以强制android(API8)搜索栏有特定的颜色吗?

时间:2013-11-17 11:37:57

标签: java android android-layout layout

我在我的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>

1 个答案:

答案 0 :(得分:0)

您需要为SeekBar创建一个具有不同进度的自定义样式。

将文件android-sdk-root \ platforms \ android-8 \ data \ res \ drawable \ progress_horizo​​ntal.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_horizo​​ntal文件。创建多个drawable-vXX文件夹(即GB的drawable-v10,ICS的drawable-v14)并将修改后的progress_horizo​​ntal.xml文件放入这些文件夹中。您也可以在Android SDK中找到这些文件。

编辑2:然而,这个解决方案没有一个有点严重的缺陷:设备供应商喜欢为他们的Android固件创建自定义主题,通常涉及不同的drawables和颜色。使用上述方法,将覆盖这些自定义样式,从而可能导致用户界面不一致。