我正在尝试替换并覆盖公司主题的默认触摸突出显示颜色。
我已经通过在我的主题属性上使用actionBarItemBackground成功完成了操作栏按钮,但我正在查看应用程序范围的更改,其中按钮,操作栏,抽屉或菜单中的每个按下的元素都默认为我的颜色而不是Holo蓝色。我尝试过像colorPressedHighlight这样的属性。 colorFocusedHighlight但没有效果。
我还想更改滚动结束提示的颜色,当滚动元素到达一端并且仍在尝试滚动时,可滚动元素两侧的小渐变。
鉴于错误回答的数量很大,让我再说一遍。我知道选择器是什么,我知道如何使用它,我已经明确声明我已经用几个不同的子属性覆盖了主题,但没有一个我要求的。我正在寻找属性来更改所有元素的默认触摸高亮,以及滚动缓存提示的颜色,同样适用于所有元素。
答案 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/
然后在您的应用中下载,集成并设置它。