覆盖触摸高亮,滚动提示的主题颜色

时间:2014-01-10 12:09:27

标签: android theming

我正在尝试替换并覆盖公司主题的默认触摸突出显示颜色。

我已经通过在我的主题属性上使用actionBarItemBackground成功完成了操作栏按钮,但我正在查看应用程序范围的更改,其中按钮,操作栏,抽屉或菜单中的每个按下的元素都默认为我的颜色而不是Holo蓝色。我尝试过像colorPressedHighlight这样的属性。 colorFocusedHighlight但没有效果。

我还想更改滚动结束提示的颜色,当滚动元素到达一端并且仍在尝试滚动时,可滚动元素两侧的小渐变。

鉴于错误回答的数量很大,让我再说一遍。我知道选择器是什么,我知道如何使用它,我已经明确声明我已经用几个不同的子属性覆盖了主题,但没有一个我要求的。我正在寻找属性来更改所有元素的默认触摸高亮,以及滚动缓存提示的颜色,同样适用于所有元素。

6 个答案:

答案 0 :(得分:3)

要更改滚动结束提示,您可以尝试使用this库获取精彩解决方案,或者只使用以下代码快速找到解决方案(code source and explanation):

static void brandGlowEffect(Context context, int brandColor) {
    int glowDrawableId = context.getResources().getIdentifier("overscroll_glow", "drawable", "android");
    Drawable androidGlow = context.getResources().getDrawable(glowDrawableId);
    androidGlow.setColorFilter(brandColor, PorterDuff.Mode.MULTIPLY);
}

请注意,这些都有点hacky,因为它们适用于平台可绘制资源,保证在Android版本之间保持相同,但加注是这些资源尚未从1.0重命名为KitKat。

答案 1 :(得分:3)

我在这里找到答案:https://stackoverflow.com/a/9062723/1266326

组件的名称不是滚动提示,而是过度滚动。

答案 2 :(得分:0)

您要做的是将custom_color.xml文件添加到您的apps drawables文件夹中。您可以根据需要为其命名,它可能与

类似
<?xml version="1.0" encoding="utf-8"?>
<selector
    xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
    <shape>
        <gradient
            android:startColor="#004F81"
            android:endColor="#004F81"
            android:angle="270" />
        <stroke
            android:width="3dp"
            android:color="#004F81" />
        <corners
            android:radius="3dp" />          
    </shape>
</item>
<item android:state_focused="true" >
    <shape>
        <gradient
            android:endColor="#004F81"
            android:startColor="#004F81"
            android:angle="270" />
        <stroke
            android:width="3dp"
            android:color="#004F81" />
        <corners
            android:radius="3dp" />         
    </shape>
</item>
<item>        
    <shape>
        <gradient
            android:endColor="#43AFE8"
            android:startColor="#43AFE8"
            android:angle="270" />
        <stroke
            android:width="1dp"
            android:color="#43AFE8" />
        <corners
            android:radius="6dp" />
        <padding
            android:left="2dp"
            android:top="2dp"
            android:right="2dp"
            android:bottom="2dp" />
    </shape>
</item>
</selector>

然后在所有布局xml文件中,只需将每个元素的后轮设置为自定义后退轮

<Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/custom_color"
        android:textColor="#FFFFFF"
        android:text="Button" />

我目前正在实施此功能并且运行良好。

答案 3 :(得分:0)

您可以阅读有关State List的{​​{3}} 基本上你想要做的是创建一个选择器,用你的颜色覆盖颜色,然后创建一个主题,它是默认holo主题的“子”,并用你的选择器改变你想要改变颜色的元素。这将为您提供更广泛的应用程序解决方案。 阅读here

答案 4 :(得分:0)

我想正确的答案是&#34; 不,你可以在自己的主题中覆盖主题属性,这会在你的应用程序的活动中神奇地改变高亮颜色。片段&#34 ;.或者,在我的情况下&#34; 不,您没有参考主题属性来获取当前主题的高亮颜色&#34;。

关于&#34; 为什么?&#34;,我想是因为Google本身并没有在所有标准UI小部件中使用主题属性( TextView,EditText,Button,ListView等)因为它们依赖于PNG drawables(9个补丁)而不仅仅是状态列表。

很好的问题,但是。

答案 5 :(得分:-1)

您可以在此处设置样式:http://android-holo-colors.com/

然后在您的应用中下载,集成并设置它。